0

当我在 jQuery 中使用 Ajax 调用将 JSON 数据发布到服务器时,我遇到了问题,该函数没有进入成功模式。当我使用 Firefox 的 POSTER 插件发布时,它会成功发布。分享相同的代码片段和屏幕截图:

function showSubscribeContent()
    {
        alert("*1*------- SUB CLICKED");

        var myJSONData = '{"data":{"mode" : "subscribe","technologyareas":[1],"assettypes":["podcast","documents"]}}';


        alert("*2*------- POSTING--------->"+myJSONData);


        $('#subscribePage').html('<h1>POSTING...</h1>');

        $.ajax({
            type: 'POST',
            url: 'https://tt.s2.acc.com/tt/subscribe-service/uid=sagar_mate',
            data: myJSONData,
            dataType: 'application/xml',
            success: function(data) { 
             alert("*3*------- POSTED SUCCESSFULLY TO THE SERVER");

             $('#subscribePage').html('<h1>POSTED</h1>');

          } // Success Function 
          });   // Ajax Call
}

我收到警报编号12但不是3

此外,当我使用 Firefox 的 POSTER 插件发布时,它很容易发布。

在此处输入图像描述

响应是成功的。

海报插件快照

我无法使用 AJAX 调用发布相同的数据。

谢谢, 安基特

4

4 回答 4

1

除非并且直到您的 AJAX 调用中的 URL 属于同一个域,否则我认为它不会成功发布。Firefox 的 POSTER 插件没有对域进行任何此类限制,但浏览器会对应用程序进行此限制。

尝试检查错误:function(){alert(4);}

看看它是否至少到达错误处理程序

于 2013-01-21T08:08:55.157 回答
1

请明确你想要什么,当使用 Firefox 的 POSTER 插件时,你已将数据类型指定为 json,而在使用 ajax 时,你正在使用 xml。

如果您将数据作为 JSON 发布,请使用 JSON.stringify,它接受 JSON 对象并将其转换为字符串。

于 2013-01-21T08:29:47.210 回答
1

尝试使用此代码

function showSubscribeContent()
    {
        alert("*1*------- SUB CLICKED");
        var myJSONData = {"data":{"mode" : "subscribe","technologyareas":[1],"assettypes":["podcast","documents"]}};
        alert("*2*------- POSTING--------->"+myJSONData);
        $('#subscribePage').html('<h1>POSTING...</h1>');

        $.ajax({
            type: 'POST',
            url: 'https://tt.s2.acc.com/tt/subscribe-service/uid=sagar_mate',
            data: myJSONData,
            dataType: 'application/json',
            success: function(data) { 
             alert("*3*------- POSTED SUCCESSFULLY TO THE SERVER");
             $('#subscribePage').html('<h1>POSTED</h1>');

          } // Success Function 
          });   // Ajax Call
}

在这里,我更改了以下几行

将 myJSONData 从字符串转换为 JSON 对象

var myJSONData = {"data":{"mode" : "subscribe","technologyareas":[1],"assettypes":["podcast","documents"]}};

注意:如果这不适合您,请尝试使用字符串(您正在做的方式)

将数据类型更改为 JSON

dataType: 'application/json',
于 2013-01-21T11:01:37.750 回答
0

在 beforeSend 函数中添加标题对我来说效果很好。CORS 的安全原因。

于 2013-01-24T09:58:41.337 回答