webmethod返回整个html instread字符串值

时间:2015-03-22 16:38:52

标签: javascript asp.net ajax xmlhttprequest webmethod

我试图从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;
}

1 个答案:

答案 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/