Php 我不确定我的JSON是否正确格式化以访问它
这里是另一个JSON问题(我总是在与数组斗争) 我的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
[{"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部分和以下所有索引/键?Afor(数据中的项)
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);