Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.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 如何让$.getJSON在JSONP上工作_Javascript_Jquery_Json_Ajax_Jsonp - Fatal编程技术网

Javascript 如何让$.getJSON在JSONP上工作

Javascript 如何让$.getJSON在JSONP上工作,javascript,jquery,json,ajax,jsonp,Javascript,Jquery,Json,Ajax,Jsonp,我知道看起来很多,但我的问题只涉及一行(粗体)代码。我知道我的事件处理程序设置正确。我知道我的url到目前为止应该是什么,除了?callback=?第二部分(我在另一篇文章中读到,通过将它放在传递给$.getJSON的url的末尾,getJSON可以使用JSONP,并且根据他们的API页面,wiki使用JSONP)。我还确信domMod函数永远不会运行,甚至它的第一行也不会运行。所以不要担心我的代码的其他部分,如果你能告诉我为什么我的$.getJSON没有调用这个函数,我对这个东西真的很陌生。我

我知道看起来很多,但我的问题只涉及一行(粗体)代码。我知道我的事件处理程序设置正确。我知道我的url到目前为止应该是什么,除了?callback=?第二部分(我在另一篇文章中读到,通过将它放在传递给$.getJSON的url的末尾,getJSON可以使用JSONP,并且根据他们的API页面,wiki使用JSONP)。我还确信domMod函数永远不会运行,甚至它的第一行也不会运行。所以不要担心我的代码的其他部分,如果你能告诉我为什么我的$.getJSON没有调用这个函数,我对这个东西真的很陌生。我收到的错误消息是

wikiViewer.html:1拒绝从执行脚本 “…=jordan?callback=JQUERY11110764447421301563_1454965359373&_=1454965359374” 因为它的MIME类型('application/json')是不可执行的,并且 已启用严格的MIME类型检查

(函数(){
var searchBtn=document.getElementById('search');
//var body=document.getElementsByTagName('body')[0];
var输入=document.getElementById(“输入”);
var bodyDiv=document.getElementById('bodyDiv')
$(文档).ready(函数(){
searchBtn.addEventListener('click',searchWiki);
函数searchWiki(){
bodyDiv.innerHTML=“”;
var url='https:\/\/en.wikipedia.org/w/api.php?format=json&action=query&generator=search&gsrnamespace=0&gsrlimit=10&prop=pageimages&pilimit=max&exintro&explaintext&ex句子=1&exlimit=max&gsrsearch='
如果(input.value==“”){
返回;
}
var searchTerm=input.value.replace(/\s/g,'%20');
url=url+searchTerm+“?回调=?”;
**$.getJSON(url,domMod)**//将文件名更改为我们希望搜索的内容
函数domMod(json){//基于json文件如何处理dom注意,我们需要首先检查并删除以前的搜索内容
风险价值分录;
如果(!json.hasOwnProperty(查询)){
返回;
}
如果(!json.query.hasOwnProperty(页)){
返回;
}
json=json.query.pages;
var keys=Object.keys(json);
var keysLength=keys.length;
对于(var i=0;i'
if(entry.hasOwnProperty('thumbnail'){//将图像添加到entryDiv的imageDiv子级
imageDiv.style.backgroundImage=“url(“+entry.缩略图.source+”)”
}
bodyDiv.appendChild(outterDiv);//将子对象追加到主体
}
}
} 
});
}())

您已经使用
在url中启动了一个查询字符串,但正在添加另一个
,当您执行以下操作时:

url = url + searchTerm + "?callback=?";
改为

url = url + searchTerm + "&callback=?";
当我发送“食物”一词时效果很好


为什么url以https:\/\/开头?是不是应该是https://?你遇到了。看,尤其是。如果删除
+“?回调=?”
,您可能会很好。谢谢Fredrik,我确实去掉了反斜杠。而Kenney在删除之后,我得到的XMLHttpRequest无法加载…mit=max&exintro&explaintext&ex句子=1&exlimit=max&gsrsearch=ray%20rice。请求的资源上不存在“Access Control Allow Origin”标头。因此,不允许访问源代码“”。好的,这几乎是相同的错误。在我提到的第三个链接中,有一个JS代码片段向您展示了如何调用他们的API-使用
$.ajax
,设置一些选项,特别是
origin
with credentials
。非常感谢!!!!!!!整个下午都被卡住了,因为我现在手头上的每个项目都涉及检索JSONPone建议……使用对象作为
数据
参数,jQuery将为您构建查询字符串。添加/删除要容易得多,而且对
&
不太在意?
您能详细说明一下吗?我不知道你所说的使用对象作为数据参数是什么意思
url = url + searchTerm + "&callback=?";