jquery ajax 获取

Posted

技术标签:

【中文标题】jquery ajax 获取【英文标题】:jquery ajax get 【发布时间】:2011-05-03 11:41:57 【问题描述】:

为什么这不起作用? (我什么都试过了!)

$.ajax(
    type: "GET",
    contentType: "application/json; charset=utf-8",
    url: "Webservice.asmx/HelloWorld",
    data:  param1: "aaa" ,
    success: function (msg) 
        alert(msg.d);
    
);

网络服务

    [WebMethod]
    [ScriptMethod(UseHttpGet = true, XmlSerializeString = false, ResponseFormat = ResponseFormat.Json)]
public string HelloWorld(string param1)

return "Hello World";

错误信息

"Message":"Invalid JSON primitive: aaa.","StackTrace":" at System.Web.Script.Serialization.javascriptObjectDeserializer.DeserializePrimitiveObject()\r\n at System.Web.Script.Serialization.JavaScriptObjectDeserializer .DeserializeInternal(Int32 深度)\r\n 在 System.Web.Script.Serialization.JavaScriptObjectDeserializer.BasicDeserialize(字符串输入,Int32 depthLimit,JavaScriptSerializer 序列化程序)\r\n 在 System.Web.Script.Serialization.JavaScriptSerializer.Deserialize(JavaScriptSerializer序列化程序、字符串输入、类型类型、Int32 depthLimit)\r\n 在 System.Web.Script.Services.RestHandler.GetRawParamsFromGetRequest(HttpContext 上下文、JavaScriptSerializer 序列化程序、WebServiceMethodData methodData)\r\n 在 System.Web.Script.Services。 RestHandler.GetRawParams(WebServiceMethodData methodData, HttpContext context)\r\n at System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext context, WebServiceMethodData methodData)","ExceptionType":"System.ArgumentExcept离子"

【问题讨论】:

【参考方案1】:

尝试使您的数据成为完整的字符串,例如:

$.ajax(
    type: "GET",
    contentType: "application/json; charset=utf-8",
    url: "Webservice.asmx/HelloWorld",
    data: ' "param1": "aaa" ',
    success: function (msg) 
        alert(msg.d);
    
);

【讨论】:

【参考方案2】:

使用 ASP.NET,您的 ajax 请求必须是 POST 才能使用 JSON。

$.ajax(
    // type: "GET",
    type: "POST",
    contentType: "application/json; charset=utf-8",
    url: "Webservice.asmx/HelloWorld",
    data: ' param1: value1, param2: value2 ',
    success: function (msg) 
        alert(msg.d);
    
);

请参阅this 了解更多信息。

【讨论】:

【参考方案3】:

作为使用稍微烦人的 Web 服务项目的替代方法,我建议研究 asp.net mvc 并使用控制器作为您的“服务”。

【讨论】:

以上是关于jquery ajax 获取的主要内容,如果未能解决你的问题,请参考以下文章

如何获取 jQuery.ajax 响应状态?

jQuery:如何从 $.ajax.error 方法中获取 HTTP 状态代码?

jQuery - 获取正确的用户 ID - AJAX

jquery中获取ajax返回数据的方法

jQuery Ajax获取

jQuery AJAX 仅获取标题并决定是不是获取内容