function getIDs() {
alert("1");
var title = document.getElementById('title').value;
alert(title);
title = "http://www.imdbapi.com/?i=&t=" + title;
alert(title);
xmlhttp=new XMLHttpRequest();
alert("2");
xmlhttp.open("GET",title,true);
alert("3");
xmlhttp.send();
alert("4");
var imdbData = xmlhttp.responseText;
alert(imdbData);
var imdbJSON = JSON.parse(imdbData);
//document.getElementById('title').value = imdbJSON.Title;
alert(imdbJSON.Title);
document.getElementById('imdbid').value = imdbJSON.ID;
return true;
}
我正在尝试根据它的标题获取电影的ID,该函数被成功调用并且警报正确,直到返回“imdbData”的警报,返回空白警报,然后不再发生警报,我不确定我在哪里出错了。任何帮助将不胜感激。
答案 0 :(得分:1)
你是异步打开它。要使其同步,请更改此:
xmlhttp.open("GET",title,true);
对此:
xmlhttp.open("GET",title,false);
通常被认为更好的方法是使其与异步性一起使用:
function getIDs() {
alert("1");
var title = document.getElementById('title').value;
title = "http://www.imdbapi.com/?i=&t=" + title;
xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange=function() {
if(xmlhttp.readyState==4) {
var imdbData = xmlhttp.responseText;
var imdbJSON = JSON.parse(imdbData);
document.getElementById('title').value = imdbJSON.Title;
document.getElementById('imdbid').value = imdbJSON.ID;
}
};
xmlhttp.open("GET",title,true);
xmlhttp.send();
return true;
}
此外,您无法从其他域请求页面。如果您使用的API支持JSONP,或者将您的Web服务器用作代理,则可能需要切换到JSONP。
答案 1 :(得分:0)
您不能使用JavaScript进行跨站点脚本编写,这就是为什么您得不到任何回报。 您需要与发布AJAX呼叫所在的域名相同。
使用服务器端脚本为您解析URL。