Javascript 在ajax中传递多个参数会给我带来错误
我想将多个参数传递给我的Javascript 在ajax中传递多个参数会给我带来错误,javascript,jquery,ajax,webmethod,Javascript,Jquery,Ajax,Webmethod,我想将多个参数传递给我的ajax代码。这是3参数。所以,我添加了如下内容 $(document).ready(function () { SearchText(); }); function SearchText() { $("#txt712").autocomplete({ source: function (request, response) { $.ajax({
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();
}
}
参考达林的code
但是在调用函数时,我将进入错误部分。如何传递多个参数以使用它
更新
另外,我从
响应代码:-
[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;
}
}
}
[ScriptMethod(ResponseFormat=ResponseFormat.Json)]
[网络方法]
公共静态列表GetAutoCompleteData(字符串用户名、字符串taluka、字符串村庄)
{
列表结果=新列表();
使用(OracleConnection ObjPriCon=新的OracleConnection(System.Configuration.ConfigurationManager.ConnectionString[“OracleConn”].ToString())
{
使用(OracleCommand cmd=new OracleCommand(“从xxcus.xxacl\u pn\u farming\u mst中选择不同的测量区域\u 7\u 12,其中测量区域\u 7\u 12”+
“如“%”| |:searchtext | |“%”和taluka=“+taluka+””和village=“+village+””,ObjPriCon))
{
ObjPriCon.Open();
cmd.Parameters.AddWithValue(“:searchtext”,username.ToLower());
OracleDataReader dr=cmd.ExecuteReader();
如果(哈斯罗博士)
{
while(dr.Read())
{
结果.添加(dr[“测量区域”7_12“].ToString());
}
}
返回结果;
}
}
}
您可以传递多个参数,如:
$.ajax({
...
data: {
var1: val1,
var2: val2,
var3: val3,
var4: val4,
// and many more
}
...
});
如果要传递数组,可以使用“JSON.stringify”。尝试如下方式传递数据:
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
},
或者像这样:
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
},
您不需要多个对象,一个对象中需要多个属性
data: JSON.stringify({username: extractLast(request.term) , taluka: $('#ddlTaluka').val(), village:$('#ddlVillage').val()}),
Ps:不要忘记在页面就绪时触发自动完成,确保这些输入中有值。最简单的方法是将包含数据键值对的对象分配给ajax调用的数据属性
$.ajax({
type: 'POST',
url: url,
data: {
'name': $('#name').val(),
'email': $('#email').val(),
// so on...
}
})
然后,您只需按照此处指定的名称在post请求中获取它们。请尝试这样做
$.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");
}
});
添加数据:JSON.stringify(“{'username':'”+extractLast(request.term)+','taluka':'“+document.getElementById('ddlTaluka').value+”,'village':'“+document.getElementById('ddlVillage').value+”),单个JSON字符串尝试了两个ur代码,但进入了错误部分error:function(result){alert(“错误”);}
查询是什么样子的?检查网络选项卡。结果是什么?查询是这样的从xxcus.xxacl\u pn\u farming\u mst中选择不同的调查区域\u 7\u 12,其中调查区域\u 7\u 12像“%”一样:searchtext | |“%”和taluka='3'和village='1'
结果是32/0 30/2
不,我是指HTTP查询,检查Getting在System.Web.Script.Serialization.JavaScriptObjectDeserializer处预览类似以下内容的内容:{Message:“Invalid JSON primitive:username.”,…}ExceptionType:“System.ArgumentException”Message:“Invalid JSON primitive:username.”StackTrace:“.反序列化primitiveObject()↵代码>也尝试了这个,没有工作。。获取相同的错误
alert@madalinivascu,有趣的是,我们提出了针对问题的解决方案,但没有投票权,而另一个建议通用方法的答案得到了投票权。go Figure我不熟悉.net,但您返回的是文本而不是json,并且您发送的是json,您的.net函数是否接受json作为输入?您的xhr请求有什么响应代码?404500?@madalinivascu:我该怎么检查?到目前为止,它以错误
的形式向我发出警报。