Ajax请求加载.php文件不起作用

时间:2014-03-24 19:35:44

标签: javascript ajax

尝试将postcode.php文件中的内容加载到#postcodeList div中,但它无法正常工作(没有任何反应)。我检查了postcode.php文件,它回应了正确的信息。

var loadicecream = document.getElementById("iceCreams");
loadicecream.addEventListener("click", iceAjax, false);

function iceAjax() {
    var xmlhttp;
    if (window.XMLHttpRequest) {
      xmlhttp = new XMLHttpRequest();
    }
    else {
      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }

    xmlhttp.open("POST","ice-cream-list.php",true);
    xmlhttp.send();

    document.getElementById("ice-cream-list").innerHTML = xmlhttp.responseText;
}

1 个答案:

答案 0 :(得分:0)

您希望查询以异步方式执行(第三个参数以打开函数),然后您同步尝试读取该值。这是在发送查询之前发生的,所以它总是为空。

同步运行加载,或将xmlhttp.onreadystatechange设置为指向处理加载状态的函数。最好的方法是异步执行,因为您不希望在加载数据时阻止用户使用页面。

快速示例,仅处理成功案例:

var xmlhttp;
if (window.XMLHttpRequest) {
  xmlhttp = new XMLHttpRequest();
}
else {
  xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}

xmlhttp.onreadystatechange  = function()
{
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
    {
        document.getElementById("postcodeList").innerHTML = xmlhttp.responseText;
    }
}

xmlhttp.open("POST","postcode.php",true);
xmlhttp.send();

阅读onreadystatechange的文档,至少你想要处理有超时或一些错误的情况,否则用户不会知道出错了。