1

我正在尝试将参数传递给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

4 回答 4

0

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

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

该过程将是:

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

或者正如@charlietfl 建议的那样,您可以使用YQL 和 Jquery

于 2012-06-21T06:36:08.523 回答
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.

于 2012-06-21T06:00:39.380 回答
0

看起来您正在从您的网站向另一个域发出请求,这违反了浏览器的 SAME ORIGIN POLICY,您需要使用JSONP来解决这个问题。

于 2012-06-21T06:04:04.560 回答
0

编辑: POST 不适用于跨域使用 $.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,在这种情况下,您将需要求助于替代方法

于 2012-06-21T06:04:08.617 回答