将JSON数据发布到服务器URL

时间:2013-01-21 07:58:20

标签: javascript jquery ajax json post

当我在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
}

我收到提示号码 1 2 但不是 3

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

enter image description here

响应成功。

POSTER Plugin Snaps

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

谢谢, ANKIT

4 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

请清楚你想要什么,当你使用Firefox的POSTER插件时,你指定的数据类型为json,而使用ajax则使用xml。

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

答案 2 :(得分: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"]}};

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

将datatyle更改为JSON

dataType: 'application/json',

答案 3 :(得分:0)

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