使用AJAX和JSON时没有响应

时间:2011-06-25 20:25:24

标签: javascript ajax 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”的警报,返回空白警报,然后不再发生警报,我不确定我在哪里出错了。任何帮助将不胜感激。

2 个答案:

答案 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。