【问题标题】:Passing JSON object from php to JS via Ajax通过 Ajax 将 JSON 对象从 php 传递给 JS
【发布时间】:2013-06-15 08:22:36
【问题描述】:

我正在尝试使用 Ajax 将 JSON 对象从 php 脚本传递到 Javascript 文件。下面的代码适用于一个简单的字符串,但我现在正在尝试修改它以使用 JSON 对象中包含的多个字符串。我在下面粘贴了每个文件的摘录。我做错了什么?

这是来自创建请求的 html/javascript 文件的摘录...

  function retrieveAircraftInfo(str) {

    var xmlhttp;
    if (str.length==0) { 
     document.aircraftRegForm.aircraftManufacturer.value="";
     return;
     }


    if (window.XMLHttpRequest) {
     // code for IE7+, Firefox, Chrome, Opera, Safari
     xmlhttp = new XMLHttpRequest();
     } else {
        // code for IE6, IE5
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }


    xmlhttp.onreadystatechange = function() {

            if (xmlhttp.readyState==4) {
                var aircraftDataJSON = xmlhttp.responseText.evalJSON();
                document.aircraftRegForm.aircraftManufacturer.value = aircraftDataJSON.manufacuter;
                document.aircraftRegForm.aircraftType.value = aircraftDataJSON.type;
                document.aircraftRegForm.aircraftPopularName.value = aircraftDataJSON.popularName;
                document.aircraftRegForm.aircraftGenericName.value = aircraftDataJSON.genericName;
           }
     }
    xmlhttp.open("GET","scraper.php?q="+str,true);
    xmlhttp.send();
    }

这是从进行数据库搜索的 php 文件中提取的:

$aircraftDataArray = array("manufacturer" => $extractedManufacturer,
    "type" => $extractedType,
    "popularName" => $extractedPopularName,
    "genericName" => $extractedGenericName);

echo json_encode($aircraftDataArray);

【问题讨论】:

  • 你的意思是json_encode()对吗?
  • 啊是的 - 这是一个错误。 [我已更新代码] 但仍然无法正常工作。是否与将内容类型设置为 application/JSON 有关?我在某处看到过这个,但不知道该放在哪里。
  • header 的调用可以在任何输出之前进行(例如echo)。对于 Content-Type 标头,您可以在知道内容类型后立即设置它。如果您只返回 JSON,如果您愿意,它可以是脚本的第一行。
  • 啊,搞定了...我需要 JSON.parse(xmlhttp.responseText);
  • 你也会想要这个:if (xmlhttp.readyState==4 && xmlhttp.status==200)。 readyState 只是告诉您服务器已完成对请求的处理——而不是请求成功,例如服务器寻找您请求的页面,但找不到它,因此服务器返回 404 错误。而且如果你使用jQuery,你就不用担心所有跨浏览器的垃圾了。

标签: php javascript ajax json


【解决方案1】:

试试

var aircraftDataJSON = JSON.parse(xmlhttp.response);

否则,如果 PHP 返回错误,请在开发者工具的控制台中检查。

您的 JS 示例使用 JSON.parse 对我有用

【讨论】:

    猜你喜欢
    • 2014-12-26
    • 2017-03-02
    • 2020-04-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-09
    • 2014-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多