【问题标题】:Passing multiple parameters in ajax is giving me error在ajax中传递多个参数给我错误
【发布时间】:2016-11-09 07:07:29
【问题描述】:

我想将多个参数传递给我的ajax 代码。这是3 参数。所以,我在下面添加了

$(document).ready(function () {
        SearchText();
    });
    function SearchText() {
        $("#txt712").autocomplete({
            source: function (request, response) {
                $.ajax({
                    type: "POST",
                    contentType: "application/json; charset=utf-8",
                    url: "FrmAgreementMaster.aspx/GetAutoCompleteData",
                    //data: "{'username':'" + extractLast(request.term) + "'}",
                    data: JSON.stringify("{'username':'" + extractLast(request.term) + "'}", "{'taluka':'" + document.getElementById('ddlTaluka').value + "'}", "{'village':'" + document.getElementById('ddlVillage').value + "'}"),
                    dataType: "json",
                    success: function (data) {
                        response(data.d);
                    },
                    error: function (result) {
                        alert("Error");
                    }
                });
            },
            focus: function () {
                return false;
            },
            select: function (event, ui) {
                var terms = split(this.value);
                terms.pop();
                terms.push(ui.item.value);
                terms.push("");
                this.value = terms.join(", ");
                return false;
            }
        });
        $("#txt712").bind("keydown", function (event) {
            if (event.keyCode === $.ui.keyCode.TAB &&
                $(this).data("autocomplete").menu.active) {
                event.preventDefault();
            }
        })
        function split(val) {
            return val.split(/,\s*/);
        }
        function extractLast(term) {
            return split(term).pop();
        }
    }

参考HEREDarin's 代码。

但在调用该函数时,它会将我带到ERROR 部分。如何传递多个参数来使用它。

更新

另外,我从here获取了ajax引用

响应码:-

[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
[WebMethod]
public static List<string> GetAutoCompleteData(string username, string taluka, string village)
{
    List<string> result = new List<string>();
    using (OracleConnection ObjPriCon = new OracleConnection(System.Configuration.ConfigurationManager.ConnectionStrings["OracleConn"].ToString()))
    {

        using (OracleCommand cmd = new OracleCommand("select distinct survey_area_7_12 FROM xxcus.xxacl_pn_farming_mst WHERE survey_area_7_12  " +
                                                     "LIKE '%' || :searchtext || '%' and taluka = '" + taluka + "' and village = '" + village + "'", ObjPriCon))
        {
            ObjPriCon.Open();
            cmd.Parameters.AddWithValue(":searchtext", username.ToLower());
            OracleDataReader dr = cmd.ExecuteReader();
            if (dr.HasRows)
            {
                while (dr.Read())
                {
                    result.Add(dr["survey_area_7_12"].ToString());
                }
            }
            return result;
        }
    }
}

【问题讨论】:

  • 添加数据:JSON.stringify("{'username':'" + extractLast(request.term) + "','taluka':'" + document.getElementById('ddlTaluka')。 value + "','village':'" + document.getElementById('ddlVillage').value + "'}"),单个json字符串

标签: javascript jquery ajax webmethod


【解决方案1】:

您可以传递多个参数,例如:

$.ajax({
...
data: {
    var1: val1,
    var2: val2,
    var3: val3,
    var4: val4,
    // and many more
}
...
});

如果你想传递一个数组,你可以使用'JSON.stringify'。

【讨论】:

    【解决方案2】:

    你不需要多个对象,你需要一个对象中有多个属性

     data: JSON.stringify({username: extractLast(request.term) , taluka: $('#ddlTaluka').val(), village:$('#ddlVillage').val()}),
    

    Ps:不要忘记在页面准备好时触发自动完成,确保这些输入中有值

    【讨论】:

    • 也试过了,没醒。。得到相同的error警报
    • @madalinivascu,有趣的是,我们提出了针对问题的解决方案并且没有投票,而另一个建议通用方法的答案得到了投票。去图
    • 我不熟悉 .net 但您返回的是文本而不是 json,并且您发送的是 json ,您的 .net 函数是否接受 json 作为输入?
    • 您的 xhr 请求有什么响应代码? 404 500 ?
    • @madalinivascu:我该如何检查?截至目前,它给了我Error的警报。
    【解决方案3】:

    尝试像这样传递数据:

    data: JSON.stringify([
        {username: extractLast(request.term)},
        {taluka: document.getElementById('ddlTaluka').value},
        {village: document.getElementById('ddlVillage').value}
    ]),
    

    或者像这样:

    data: {
        username: extractLast(request.term),
        taluka: document.getElementById('ddlTaluka').value,
        village: document.getElementById('ddlVillage').value
    },
    

    【讨论】:

    • 尝试了你的代码,但进入错误部分error: function (result) { alert("Error"); }
    • 查询看起来如何?检查网络选项卡。结果是什么?
    • 查询是这样的SELECT DISTINCT survey_area_7_12 FROM xxcus.xxacl_pn_farming_mst WHERE survey_area_7_12 LIKE '%' || :searchtext || '%' AND taluka = '3' AND village = '1',结果是32/0 30/2
    • 不,我的意思是HTTP查询,检查the network tab
    • 获得类似{Message: "Invalid JSON primitive: username.",…} ExceptionType : "System.ArgumentException" Message : "Invalid JSON primitive: username." StackTrace : " at System.Web.Script.Serialization.JavaScriptObjectDeserializer‌​.DeserializePrimitiv‌​eObject() ↵的预览
    【解决方案4】:

    最简单的方法是将包含数据键值对的对象分配给 ajax 调用的 data 属性。

    $.ajax({
       type: 'POST',
       url: url,
       data: {
          'name': $('#name').val(),
          'email': $('#email').val(),
          // so on...
       }
    })
    

    然后您可以通过您在此处指定的名称在您的发布请求中简单地获取它们。

    【讨论】:

      【解决方案5】:

      请尝试这样做。

       $.ajax({
                      type: "POST",
                      contentType: "application/json; charset=utf-8",
                      url: "FrmAgreementMaster.aspx/GetAutoCompleteData",
                      //data: "{'username':'" + extractLast(request.term) + "'}",
      
              data: JSON.stringify({
                  username: extractLast(request.term),taluka:document.getElementById('ddlTaluka').value,village:document.getElementById('ddlVillage').value
              }),
                      error: function (result) {
                          alert("Error");
                      }
                  });
      

      【讨论】:

        猜你喜欢
        • 2013-09-27
        • 1970-01-01
        • 2010-12-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多