Javascript JQuery.post()不返回数据
我正在尝试将参数传递给API。我在HTML文件中有以下JQuery脚本Javascript JQuery.post()不返回数据,javascript,jquery,Javascript,Jquery,我正在尝试将参数传递给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); }
$.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控制台中看到的,我可以看到请求已经发出并且成功了,响应的内容长度与预期的一样。但是回调函数没有在控制台窗口中打印任何内容
我做错了什么?你应该这样写
$.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。看起来您正在从网站向另一个域发出请求,这违反了浏览器的同源策略,您需要使用来解决此问题。编辑:POST不适用于跨域使用$.getJSON
API完全有可能不提供JSONP,在这种情况下,您将需要求助于替代方法问题中发布的脚本的主要且唯一的问题是,它在正常网页上发出跨域HTTP/POST请求。我以前认为您正在使用某些浏览器扩展,如果配置正确,它将允许您进行跨域请求。HTTP/POST在您的情况下不起作用。尽管有一些黑客可以让HTTP/get工作,比如使用脚本标记和JSONP 在您的情况下,我建议让您的服务器为您执行请求,该服务器为您提供页面服务 这一进程将是: 您向服务器提交一个带有tinypaste参数的请求。 服务器端脚本将执行HTTP/POST到tinypaste,并获取响应。此响应将发送到浏览器。 浏览器获取响应。可能是重定向之类的
或者正如@charlietfl所建议的,您可以使用,但在本例中,他们没有使用success。为什么会这样?如果参数键被引用与否有什么区别?这无关紧要,这是有效的json:{粘贴:这是测试粘贴,标题:测试,是代码:0,是私有:1}我已经编辑了我的答案,不管你有什么权利。我将jsonp添加为数据类型以生成$。post Working说他正在获取数据,现在必须假设它是jsonp,因为无论如何都必须使用Get cross domain,所以问题实际上存在于其他地方。允许的域的配置或其他什么-这是我所怀疑的。也就是说,以防他正在进行扩展。否则,在我看来这是不可能的。@master你是对的。我认为Tinypaste不支持JSONP!请告诉我们,你在哪里工作。要延期吗?还是普通网页?因为有一个跨域请求。或者如果使用GET,您可能会超出最大长度..不,我正在处理一个正常的网页。在这种情况下,POST$.POST将不起作用。至于使用GET-ish方法,也就是说,如果有任何黑客攻击,因为JSONP也不受支持,当您提交长代码时,很快就会用完最大长度。YQL和JQuery将发送POST或GET请求?这将是GET请求。无法跨域POST请求。
$.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);
}
);