使用json类型数据进行跨域调用

时间:2012-10-25 05:36:30

标签: jquery asp.net jsonp

我通过以下代码点击了跨域名

 $.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类型数据

public string SaveFromMicrosite(PackageQueries x)--------它不是

public string SaveFromMicrosite(string x)--------------- It Works

PackageQueries是一个类

1 个答案:

答案 0 :(得分:0)

要使用此方法:

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

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

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

否则jQuery.ajax会将您的数据编码为application/x-www-form-urlencoded格式,其中一个键x哪个值将是您的JSON,而ASP.NET不会自动对其进行解析。