小编Bet*_*ser的帖子

asmx web服务 - jQuery ajax post json(500错误) - CORS(Access-Control-Allow-Origin设置为*)

这个主题似乎是一个拥有一百万个"解决方案"的主题,结果更加复杂.所以请稍微松一口气,因为我会试着展示发生了什么,我正在使用什么以及我是如何尝试解决这个问题的.

我的测试环境正在运行IIS6 asp.net 2.0,我已经设置好了

'Access-Control-Allow-Origin' *
Run Code Online (Sandbox Code Playgroud)

我还为.asmx扩展设置了动词

"GET,HEAD,POST,DEBUG,OPTIONS"
Run Code Online (Sandbox Code Playgroud)

通过jQuery v1.7.2 ajax()调用我能够从服务器获取xml文件,并POST到基本服务,返回一个带有预期结果跨域的字符串.所以我知道至少部分我的跨域请求正在发挥作用.

当我开始扩展它并使用json将数据发布到服务时,我的问题就出现了

我有一个简单的asmx webservice方法:

        [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public SubResponse HelloWorldX(SubRequestXX SubReq)
        {
            SubResponse sr = new SubResponse();

            sr.resultCode = "777";
            sr.resultMsg = "hello - " + SubReq.EmailAddress;

            return sr;
        }
Run Code Online (Sandbox Code Playgroud)

非常简单,并没有太多魔法发生在那里,我想要做的就是传递'SubRequestXX'对象,现在只需验证它到达那里并做出回应.

Using jQuery:

    $.ajax({
        type: "POST",
        url: "http://somedomain/subscription/MyService.asmx/HelloWorldX",
        processData: false,
        data: '{ "SubReq" : {"EmailAddress":"user@test.com"} }',
        dataType: "json",
        contentType: "application/json; charset=utf-8",
        cache: false,
        success: function(data, textStatus, jqXHR) {
            ajaxSucccess3(data, textStatus, jqXHR);
        },
        error: function(jqXHR, textStatus, errorThrown) {
            console.log("Retrieve Hello …
Run Code Online (Sandbox Code Playgroud)

jquery json iis-6 web-services cross-domain

6
推荐指数
1
解决办法
4832
查看次数

标签 统计

cross-domain ×1

iis-6 ×1

jquery ×1

json ×1

web-services ×1