Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JSON到Javascript_Javascript_Ajax_Json - Fatal编程技术网

JSON到Javascript

JSON到Javascript,javascript,ajax,json,Javascript,Ajax,Json,我尝试使用JSON,从服务器获取信息,因此我编写了以下PHP文件: ?> PHP文件的输出为JSON格式,如下所示: { "model": [ {"model_name" : "xxxxx "}, {"model_name" : "xxxxx "}, {"model_name" : "link2(U)"}, {"model_name" : "xxxxx)"}

我尝试使用JSON,从服务器获取信息,因此我编写了以下PHP文件:

?>

PHP文件的输出为JSON格式,如下所示:

{ "model":
           [
              {"model_name" : "xxxxx "},
              {"model_name" : "xxxxx "},
              {"model_name" : "link2(U)"},
              {"model_name" : "xxxxx)"}
           ]
  };
但我在Ajax中得到这样的响应:

var my_JSON_object = {};
var xmlHttp = createXmlHttpRequestObject();
  try {
         xmlHttp.open("GET", "ajaxproduct_new.php?product_id=" product_id,true);
         xmlHttp.onreadystatechange = function() {
        if (xmlHttp.readyState == 4 && xmlHttp.status == 200){
              my_JSON_object = JSON.parse( xmlHttp.responseText );

             alert(my_JSON_object.model[0].model_name);
              }
  }
             xmlHttp.send(null);

   } catch (e){
           alert("Can't connect to server:\" e.toString());
}
但是,当我对
my_JSON\u object.model[0].model\u name发出警报时,它会将错误显示为
my_JSON_object.model
未定义


为什么会这样?所有的东西我都试过了。谁能告诉我吗?

试试下面几行代码 var数据=eval(“+xmlHttp.responseText+”);
警报(data.model[0].model\u name)

您正在创建一个类似于JSON的字符串,并将其传递给
JSON\u encode
,这是错误的
json_encode
接受对象或数组。因此,创建一个数组而不是字符串:

$data = array();

while(($result_row = mysql_fetch_row($result))) {
    $data = array('model_name' => $result_row[1] . '(' . $result_row[2] .')');
}

echo json_encode(array('model' => $data));

您的JavaScript代码看起来正常。

试图对
数据执行任何操作。模型[0]。在您知道
数据之前,模型名称对我来说都不好。即使只是为了测试一些东西,
eval
也不会真正帮助你

因此,调试的第一步是警告
xmlHttp.responseText
变量

  • 如果它看起来不像您期望的那样,那么服务器就是问题所在

  • 如果它看起来确实像您期望的那样,那么您的客户端就会出现一些问题(或者您错过了json中有效的内容)


话虽如此,Felix的答案可能是正确的。

您如何构建JSONC?您可以编辑并将responseText添加到您的问题中。可能格式不正确,这不是JSON。
在JSON中是非法的。首先,浏览器显示所有产品名称,然后当用户单击特定产品时,将显示与该产品相关的所有型号,我正在使用ajax调用获取相应的模型,正如您所见,不建议使用上面的php文件从mysql databaseeval获取模型,但现在要快速获得结果,请使用eval,如果问题仍然存在,请尝试探索您的服务器端代码否我尝试过相同的错误正在出现数据。模型未定义如果这不起作用:
eval(“var data=“+xmlHttp.responseText”);警报(数据。模型[0]。模型名称)然后是一个数据问题,
eval
能告诉我们什么有用的事情,一个简单的
警报
不能?假设数据看起来是正确的,我们都假设它是正确的,直到我们了解到其他情况,如果json的格式不正确,eval会给出错误。非常感谢!!!现在它正在工作,但在这一行代码中有一些错误,因此正确的代码应该是这样的$data[]=array('model_name'=>$result_row[1].'('.$result_row[2].');再一次thankzzzzzzz@SivaRamakrishnan:哦,是的,我错过了结束括号:)已修复。不要忘记点击旁边的勾选框来接受这个答案;)如何在执行alert(my_json_object.length)时找出特定json数组的长度undefined@SivaRamakrishnan:因为
my\u JSON\u object
是一个对象而不是数组。它没有属性长度
my_JSON\u object.model
包含数组,因此您必须执行
my_JSON\u object.model.length
@SivaRamakrishnan::D继续练习和阅读:)快乐编码!
$data = array();

while(($result_row = mysql_fetch_row($result))) {
    $data = array('model_name' => $result_row[1] . '(' . $result_row[2] .')');
}

echo json_encode(array('model' => $data));