我很困惑为什么会这样。
我似乎无法通过$.ajax
成功传递数据,URL全部被破坏而不是在查询字符串中传递的数据。
我为了简洁而清理了代码,请参阅下文。
Webservice(使用GET)
[WebMethod]
[ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
public string TestMethod(string country, string city)
{
return country + city;
}
的jQuery
$.ajax({
url: "Test.asmx/TestMethod",
type: "GET",
data: '{"country":"' + country + '","city":"' + city + '"}',
dataType: "json",
success: function(msg) {
alert(msg.d);
}
});
产生的网址和错误(在Firebug中)
http://example.com/Test.asmx/TestMethod?{%22country%22:%22NZ%22,%22city%22:%22AK%22}
System.InvalidOperationException: Missing parameter: country.
答案 0 :(得分:3)
尝试更改
data: '{"country":"' + country + '","city":"' + city + '"}'
要
data: "country="+country+"&city="+city
答案 1 :(得分:1)
在选项列表中添加" contentType" 属性是我脑海中最容易的变化。
我还使用JSON.stringify()
来减少引用错误的引入。
$.ajax({
url: "Test.asmx/TestMethod",
type: "GET",
contentType: "application/json; charset=utf-8",
data: JSON.stringify({ country: country, city: city }),
dataType: "json",
success: function(msg) {
alert(msg.d);
}
});