我正在尝试将参数传递给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控制台中所见,我可以看到请求已成功并且成功(响应的内容长度符合预期)。但回调函数不会在控制台窗口中打印任何内容。
我在这里做错了什么?
答案 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。
在您的情况下,我建议让您的服务器(提供您的页面)为您执行请求。
过程将是:
或者@charlietfl建议,您可以使用YQL and Jquery