我试图从xmlhttp对象调用asp.net webmethod。
我的网络方法就像这样
[WebMethod]
public string getCities(string province)
我的javascript就像关注
xmlhttp=new XMLHttpRequest({mozSystem: true});
xmlhttp.open("POST","http://www.rental-1.com/lp.aspx/getCities/Ontario",true);
xmlhttp.send();
xmlhttp.onreadystatechange=function(){
alert(xmlhttp.readyState+", "+xmlhttp.status);
if (xmlhttp.readyState==4 && xmlhttp.status==200){
var v1=xmlhttp.responseText;
alert(v1);
}}
作为回应,我得到了整个网页的HTML。但上面我只是调用webmethod而且我期待字符串值作为回报。
任何帮助将不胜感激。为什么我没有得到字符串值而不是页面的html
这是我的服务器端代码
[WebMethod]
public static List<string> getCities(string province)
{
List<string> strp = new List<string>();
strp=getCitiesFromDB(province);
return strp;
}
答案 0 :(得分:1)
ASP.NET只会在您使用发布请求(您是)时调用您的Web方法,并将任何参数作为JSON发送到服务器(您不是这样)。如果不满足这些要求,ASP.NET将把您的请求视为基础ASPX页面的正常请求。这就是为什么您会看到整页的HTML返回的原因。
如果您JSON.stringify({ province: 'Ontario' })
,设置内容类型标头application/json
,并将其作为POST数据发送,则应该从ASP.NET而不是整页获取JSON数组。是HTML。
有关具体信息,请参阅本文的最后一部分:http://encosia.com/asmx-and-json-common-mistakes-and-misconceptions/