簡體   English   中英

使用AJAX和JSON時無響應

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM