【问题标题】:Making a cross domain call with json type data使用 json 类型数据进行跨域调用
【发布时间】:2012-10-15 06:16:26
【问题描述】:

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

 $.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)--------它没有

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

PackageQueries 是一个类

【问题讨论】:

  • 什么“失败”了?顺便说一句 JSON.stringify 的结果是字符串,它可能是一个好主意来显示有什么区别。
  • @Alexei Levenkov =我编辑问题请看最后一行

标签: jquery asp.net jsonp


【解决方案1】:

要使此方法起作用:

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

您应该将整个数据以 JSON 形式发布:

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

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

【讨论】:

    猜你喜欢
    • 2011-07-29
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-15
    • 2011-08-30
    • 1970-01-01
    相关资源
    最近更新 更多