JQuery .post()不返回数据

时间:2012-06-21 05:57:34

标签: javascript jquery

我正在尝试将参数传递给TinyPaste API。我在HTML文件中有以下JQuery脚本,

$.post("http://tinypaste.com/api/create.json", 
    { 
     "paste": "This is test paste", 
     "title": "Test",
     "is_code": 0,
     "is_private": 1
    },
    function(data) {
        console.log(data);
    }
);

如在Firefox的Web控制台中所见,我可以看到请求已成功并且成功(响应的内容长度符合预期)。但回调函数不会在控制台窗口中打印任何内容。

我在这里做错了什么?

4 个答案:

答案 0 :(得分:0)

你应该这样写

  $.post("http://tinypaste.com/api/create.json", 
            { 
             'paste': "This is test paste", 
             'title': "Test",
             'is_code': 0,
             'is_private': 1
            },
            function(data) {
                console.log(data);
            },
            'jsonp'
        );

您还必须向服务器发送数据类型,表示jsonp

答案 1 :(得分:0)

看起来您正在向您网站的其他域发出请求,这违反了浏览器的相同原则政策,您需要使用JSONP解决此问题。

答案 2 :(得分:0)

编辑:POST不适用于跨域USE $ .getJSON

$.getJSON("http://tinypaste.com/api/create.json", 
    { 
     "paste": "This is test paste", 
     "title": "Test",
     "is_code": 0,
     "is_private": 1
    },
    function(data) {
        console.log(data);
    }
);

完全有可能API不提供JSONP,在这种情况下你需要求助于替代方法

答案 3 :(得分:0)

问题中发布的脚本的主要(也是唯一)问题是它在普通网页上发出跨域HTTP / POST请求。我之前认为您正在开发一些浏览器扩展,如果配置正确,将允许您进行跨域请求。 HTTP / POST在您的情况下不起作用。虽然有一些方法可以让HTTP / GET正常工作,比如使用脚本标签和JSONP。

在您的情况下,我建议让您的服务器(提供您的页面)为您执行请求。

过程将是:

  • 使用tinypaste参数向服务器提交请求。
  • 服务器端脚本将对tinypaste执行HTTP / POST,并获取响应。此响应将发送到浏览器。
  • 浏览器获取响应。 (可能是重定向或其他东西)

或者@charlietfl建议,您可以使用YQL and Jquery