0

我通过以下代码进行跨域命中

 $.ajax({ url: "http://localhost:4417/TravelMirchiB2C/Microsite.asmx/SaveFromMicrosite",
    data: { x: JSON.stringify(data) },
    contentType: "application/json; charset=utf-8",
        dataType: "jsonp",
        success: function(json) {
        if (json.d="true")
            alert("Saved Successfully");
        },
        error: function() {
            alert("Hit error fn!");
        }
    });

在服务器端,我使用了一个 asp.net 处理程序(.ashx)页面和 .cs 页面,其中我的方法被写入(我必须调用谁)。但是当我从浏览器传递一个字符串时它工作正常但当我传递 json 时失败类型数据

公共字符串 SaveFromMicrosite(PackageQueries x)--------它没有

公共字符串 SaveFromMicrosite(string x)----------------它有效

PackageQueries 是一个类

4

1 回答 1

0

要使此方法起作用:

public string SaveFromMicrosite(PackageQueries x)
{
    ...
}

您应该将整个数据发布为 JSON:

$.ajax({
    ...
    data: JSON.stringify({ x: data }),
    ...
});

否则jQuery.ajax会将您的数据编码为application/x-www-form-urlencoded具有一个键的格式,该键x的值将是您的 JSON,并且 ASP.NET 不会自动解析该键。

于 2012-10-25T06:41:46.400 回答