Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.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 如何在纯js上编写JSONPAJAX请求?_Javascript_Ajax_Jsonp - Fatal编程技术网

Javascript 如何在纯js上编写JSONPAJAX请求?

Javascript 如何在纯js上编写JSONPAJAX请求?,javascript,ajax,jsonp,Javascript,Ajax,Jsonp,如何在纯JS中编写相同的功能 $.ajax( { url : '', data: {}, dataType:'jsonp', jsonpCallback: 'callbackName', type: 'post' ,success:function (data) { console.log('ok'); }, error:function () { console.log('error'); }

如何在纯JS中编写相同的功能

$.ajax( { url : '', data: {}, dataType:'jsonp',  jsonpCallback: 'callbackName', type: 'post'
        ,success:function (data) {
        console.log('ok');
        },
        error:function () {
        console.log('error');
        }
        });

我总是忘记XMLHttpRequest中的大写字母和小写字母。在这种特殊情况下,您根本没有进行ajax调用,而是进行JSONP请求。幸运的是,它们非常容易复制并在所有浏览器中工作

var xmlhttp=new XMLHttpRequest();
xmlhttp.open("POST", 'http://forexplay.net/ajax/quotes.php');
xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState == XMLHttpRequest.DONE) {
        if(xmlhttp.status == 200){
            console.log('Response: ' + xmlhttp.responseText );
        }else{
            console.log('Error: ' + xmlhttp.statusText )
        }
    }
}
xmlhttp.send(data);

您可以使用XMLHttpRequest。有很多关于如何做到这一点的例子。这里有一个:只需在google上搜索“纯javascript ajax”为什么ajax更优秀或者更常见?我试过这段代码。但它抛出了一个错误,以及所有“请求中的错误”JSONP和
POST
——我是否遗漏了什么?JSONP实际上是一种通过
脚本
标记(注入页面DOM)请求数据(跨站点)的方法(自然会导致
获取
请求),执行Javascript响应中定义的函数调用来处理数据。从这一点来看@Kevin B的答案是完全正确的。你的API看起来很奇怪。@joelmdev讽刺的是,这个问题突然出现在我的结果顶部。我试过这个代码。但它抛出了一个错误,以及所有“请求中的错误”,我终于明白了你的意思。看这里xmlhttp.status==2 xmlhttp.responseTextNote,这执行GET请求,不可能执行POST jsonp请求。但是如果我需要递归运行代码呢?。。。。真正地将其放入函数中。JSONP旨在跨域请求数据。凯文的表演方式完全正确。我宁愿质疑为什么TO在
POST
上发送JSONP,而纯JSON就可以了。
var s = document.createElement("script"),
    callback = "jsonpCallback_" + new Date().getTime(),
    url = "http://forexplay.net/ajax/quotes.php?callback=" + callback;
window[callback] = function (data) {
    // it worked!
    console.log(data);
};
s.src = url;
document.body.appendChild(s);