Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.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
Php 我不确定我的JSON是否正确格式化以访问它_Php_Javascript_Json - Fatal编程技术网

Php 我不确定我的JSON是否正确格式化以访问它

Php 我不确定我的JSON是否正确格式化以访问它,php,javascript,json,Php,Javascript,Json,这里是另一个JSON问题(我总是在与数组斗争) 我的PHP代码返回以下JSON结构: [{"breed":{"msg":"Breed is required","placement":"#breed_error_1","return":"false"}},{"breed":{"msg":"Breed does not exist","placement":"#breed_error_2","return":"true"}}] 我的PHP代码是: $breed[]["breed"] = arr

这里是另一个JSON问题(我总是在与数组斗争)

我的PHP代码返回以下JSON结构:

[{"breed":{"msg":"Breed is required","placement":"#breed_error_1","return":"false"}},{"breed":{"msg":"Breed does not exist","placement":"#breed_error_2","return":"true"}}] 
我的PHP代码是:

$breed[]["breed"] = array("msg"=>"Breed is required","placement"=>"#breed_error_1", "return"=>"false");
$breed[]["breed"] = array("msg"=>"Breed does not exist","placement"=>"#breed_error_2", "return"=>"true");  
还有AJAX代码:

$.ajax({
    type: 'POST',
    cache: false,
    url: "validate_breed",
    data: element+"="+$(elementSelector).val()+"&v="+validateElement,
    context: document.body,
    dataType: 'html',
    success: function(data){
        alert(data);

    }
});
alert(data)
出于调试目的发出JSON结构的警报

如何访问JSON对象的breed部分和以下所有索引/键?

A
for(数据中的项)
loop应该做到这一点,还有其他文章讨论如何获取值

实际上

在FireFox中使用
控制台.info
,您将能够可视化对象。

以下是重新格式化的JSON:

[
   {
      "breed":{
         "msg":"Breed is required",
         "placement":"#breed_error_1",
         "return":"false"
      }
   },
   {
      "breed":{
         "msg":"Breed does not exist",
         "placement":"#breed_error_2",
         "return":"true"
      }
   }
]
您拥有的是两个对象的数组
[]

首先,您需要对(var i=0;i循环,以获取每个对象(其中有2个)

片段:

for (var i = 0, len = JSON.length; i < len; i++){
    thisBreed = JSON[i].breed; //now this == {"msg" : etc etc}
    for (prop in thisBreed) {
        console.log(thisBreed.msg + thisBreed.placement + thisBreed.return);
    }
}
for(var i=0,len=JSON.length;i
确保正确json的最简单方法是以希望的方式在php tw中构建数组,然后在将其发送回之前在数组上使用它

例如,如果这是您的输出JSON对象,那么您可以使用For循环访问每个品种的索引:

var myJSON = [{
    "breed": {
        "msg": "Breed is required",
        "placement": "#breed_error_1",
        "return": "false"
    }},
{
    "breed": {
        "msg": "Breed does not exist",
        "placement": "#breed_error_2",
        "return": "true"
    }}];

for(var i=0;i<myJSON.length; i++){
     console.log(myJSON[i].breed);
}
var myJSON=[{
“品种”:{
“味精”:“品种是必需的”,
“放置”:“繁殖错误1”,
“返回”:“假”
}},
{
“品种”:{
“msg”:“品种不存在”,
“放置”:“繁殖错误2”,
“return”:“true”
}}];
对于(var i=0;i试试这个

for (var i = 0, len = JSON.length; i < len; i++){
  console.log(JSON[i].breed.msg +" - "+ JSON[i].breed.placement +" - "+ JSON[i].breed.return);
}
for(var i=0,len=JSON.length;i
如果您的php输出JSON,那么您可以在
$中指定。ajax
其中
数据类型:'JSON'
+1链接Q上的公认答案是我在自己的工作中会(和已经)如何处理它。
函数breed\u check($str){$breed=array();if($str==NULL){$breed[0][“breed”]=array(“msg”=>“品种是必需的”、“放置”=>“#品种错误"1”、“返回”=>“错误”);$BRIDE[1][“品种”]=数组(“msg”=>“品种不存在”、“放置”=>“#品种错误"2”、“返回”=>“正确”)}$this->BRIDE\u return=json\U encode($BRIDE);)
我确实创建了数组,然后进行了json_编码。包含代码片段。我创建了一个新的.js文件和.html文件来测试您的示例。我现在了解了这是如何工作的;但是,当我将此示例实现到我的项目中时,我在firebug中收到以下错误:myJSON[I].bride未定义@dottedquad你能发布一下
console.log(myJSON)
给你什么吗?当我实现var myObject=eval(“(“+data+”)”)时,代码是有效的;正如Alex Mcp解释的,“除非某种解析器通过它(比如javascript的eval()),否则它没有任何意义。“为了让这项工作顺利进行,我需要执行以下操作:var myObject=eval('('+data+'));显然,对于回答我问题的每个人给出的所有示例,我都需要使用eval。数据类型设置为JSON,那么,为什么仍然需要eval?-因为传递过来的仍然只是一个文本字符串。它可能看起来像JSON或XML或其他什么,但直到某种解析器通过它(如eval()对于javascript)它没有任何意义。很抱歉忽略了这一点。jQuery ajax可以设置为自动执行,fwiw。不用担心,Alex。我现在完全理解了这一点:-)@dottedquad在php端,在将输出回显到ajax之前,您是否对输出数组进行了
json\u编码
是的。我的编码代码是:$this->bride\u return=json\u encode($bride);