相同的Ajax调用了两次..JQuery

前端之家收集整理的这篇文章主要介绍了相同的Ajax调用了两次..JQuery前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在 JQuery中有一个问题..我在我的代码(函数1)中使用$.ajax()将字段名和序列号发送到ctrller,它通过$_POST [‘name’]和$_POST获取其数据[ ‘sequenceno’]并更新表中的字段名,序列号为no..And生成带有插入字段的预览显示面板.
现在我正在尝试更改字段名称再次现在当我点击生成显示面板字段时,相应的设置将打开,我将尝试更改字段的名称现在(功能2)

Function1和Function2都是相同的..在Function1中我发送的是fieldname和序列号

在Funciton 2中,我想发送相同的fieldname和(但是另一个值)sequenceno ..

但是在Function1中(sequenceno是计数器值)
而在Function2中(sequenceno是点击的div id(显示面板))

我怎样才能为两者使用相同的函数..或者我可以使用单独的函数..

即使我尝试使用不同网址的2个独立功能但未正确更新

我的代码

//This is what i insert the field initially

              $(".TextFieldSettings #fieldTitle").change(function (){
             fieldname=$(".TextFieldSettings #fieldTitle").val();
    $.ajax({
           type: "POST",url: "./server",data: "name="+fieldname+"&sequenceno="+counter,success: function(msg){
                      }//success
           });//ajax

     });//change

//After inserting to get the updated values in JSON format

     var htm = $.ajax({
       type: "GET",url: "./viewforms",async: false
       }).responseText;
        var myObject = eval('(' + htm + ')');


    gettype=myObject.attributes[0]["type"];
   getlabel=myObject.attributes[0]["labels"];

    //showing in my DisplayPanel view

            $("#labelstr"+counter+"").html(getlabel);
     });//change

现在
当我单击DisplayPanel视图时

$("#displayPanel div").live("click",function(){
                             div_id=$(this).attr("id");

                                var htm = $.ajax({
                                  type: "GET",url: "./getattributes/"+div_id+"",async: false
                                 }).responseText;
                                var myObject = eval('(' + htm + ')');


                                gettype=myObject.attributes[0]["type"];
                                getlabel=myObject.attributes[0]["labels"];
                                getsize=myObject.attributes[0]["size"];

    if(gettype=='Text')
     {
    $(".TextFieldSettings").show(function(){
    $(".TextFieldSettings #fieldTitle").val(getlabel);//showing the updated value
                             if(getsize=='100')
                           {
             $("#fieldSize option:contains(Small)").attr("selected",true);
                           }
                             else if(getsize=='200')
                            {
        $("#fieldSize option:contains(Medium)").attr("selected",true);
                         }
              else 
            {
          $("#fieldSize option:contains(Large)").attr("selected",true);
            }
//Again i m changing the fieldname


       $(".TextFieldSettings #fieldTitle").change(function (){
      fieldname=$(".TextFieldSettings #fieldTitle").val();


                                alert(div_id);
                                        $.ajax({
                                           type: "POST",url: "./editsettings",data: "name="+fieldname+"&sequenceno="+div_id,success: function(msg){

                                            }//success
                                           });//ajax


});//change in text value later*/



                    });//show
                    }//if type = TEXT

                });//displaypanel Div clicked

但是现在如果我再次尝试更改字段名,我正在编写另一个POST函数editsettings,但执行是在Func1内部(最初更改)而不是Func2(再次在fieldname中更改)…
请有人为此得到答案….
注意:
$(“.TextFieldSettings #fieldTitle”).change()在我的prg中使用了两次.可能是因为这个更新出错了

似乎问题是你的两个事件处理程序都在触发,而你只想要触发后者.

jQuery .change()函数为change事件添加了一个事件处理程序.它不会取代现有的.如果要删除以前的处理程序,则需要以下内容

$(".TextFieldSettings #fieldTitle").unbind('change')

在附加新处理程序之前.

请注意,我不确定这是否有效(我刚从api文档中找到它),我现在无法测试它.但是,一般的想法是,如果您希望事件处理程序停止响应事件,则必须删除处理程序.

原文链接:https://www.f2er.com/ajax/159958.html

猜你在找的Ajax相关文章