使用 jquery ajax jsonp 调用 web 服务:错误

Posted

技术标签:

【中文标题】使用 jquery ajax jsonp 调用 web 服务:错误【英文标题】:calling a webservice with jquery ajax jsonp :error 【发布时间】:2015-01-03 05:23:39 【问题描述】:

我正在尝试使用 ajax 调用 web 服务,我得到一个内部 500 错误。请你告诉我不确定我做错了什么,我可以毫无问题地调用 webmethod。

JQUERY AJAX CALL

<script type="text/javascript">

function LoginVailid() 

    $.ajax(
        url: "http://localhost:49301/AppService.asmx/LoggonAuthentication",
        contentType: "application/json; charset=utf-8",
        data: "",
        dataType: "jsonp",
        jsonp: "callback",
        crossDomain: true,
        success: function (json) 
            alert(json.d);
        ,
        error: function () 
            alert("Hit error fn!");
        
    );

</script> 

网络服务方法

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]

[System.Web.Script.Services.ScriptService]
public class Service1 : System.Web.Services.WebService


    [WebMethod]
    [ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
    public string LoggonAuthentication()
    
        return "Hello World";
    


【问题讨论】:

你能不能把dataTypejsonp改成json 如果我这样做,则会得到以下 ERROR.XMLHttpRequest cannot load localhost:49301/AppService.asmx/LoggonAuthentication?。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,Origin 'localhost:55255' 不允许访问。响应的 HTTP 状态代码为 500。 > 我正在尝试使用 ajax 调用 web 服务,我得到一个内部 500 错误。你能调试和检查真正的异常吗? learn.jquery.com/ajax/working-with-jsonp JSONP 的出现——本质上是一种自愿的跨站点脚本攻击——为强大的内容混搭打开了大门。许多知名网站都提供 JSONP 服务,允许您通过预定义的 API 访问其内容。 查看SO question 【参考方案1】:

试试这个代码

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

    return  callback + "(message: 'Hello World')";

article 和 this SO question 也可以提供帮助

【讨论】:

以上是关于使用 jquery ajax jsonp 调用 web 服务:错误的主要内容,如果未能解决你的问题,请参考以下文章

使用 jQuery 中止 JSONP ajax 请求

使用 Jsonp 进行 $.ajax 调用后无法在 Jquery 中检索数据

处理跨域 jsonp 调用的 jQuery.ajax 错误

如何在 jQuery ajax 调用中将 JSON 响应解析为 JSONP?

jquery ajax使用JSONP解决跨域问题

jquery ajax使用JSONP解决跨域问题