[英]No response when using AJAX and JSON
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”的警報(返回空白警報),然后不再發生警報,不確定我在哪里錯了。 任何援助將不勝感激。
您正在異步打開它。 要使其同步,請更改此:
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。
您不允許使用JavaScript進行跨站點腳本編寫,這就是為什么您一無所獲的原因。 發布AJAX呼叫時,您必須位於同一域中。
而是使用服務器端腳本為您解析URL。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.