Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JQuery.post()不返回数据_Javascript_Jquery - Fatal编程技术网

Javascript JQuery.post()不返回数据

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); }

我正在尝试将参数传递给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控制台中看到的,我可以看到请求已经发出并且成功了,响应的内容长度与预期的一样。但是回调函数没有在控制台窗口中打印任何内容


我做错了什么?你应该这样写

  $.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);
    }
);