我有一个PHP代码从mysql中选择一些数据。我使用jquery来执行这样的PHP代码:
var first = $.get("<?php echo base_url() . 'control_closing/getKomentarMD/' ?>", function(data) {
first = initializedFirstComment(data); // Initialized first current comment
console.log(first);
});
它让我在萤火虫中这样回归:
GET http://localhost/portal/control_closing/getKomentarMD/ 200 OK 47ms
[{"id_request":"001","comment_bapak":"Mohon kepada pihak IT, selalu laporkan ke saya tentang fast item...<br>"},
{"id_request":"002","comment_bapak":null},
{"id_request":"003","comment_bapak":null},
{"id_request":"005","comment_bapak":null},
{"id_request":"008","comment_bapak":null},
{"id_request":"009","comment_bapak":"Test aja<br>"},
{"id_request":"010","comment_bapak":null},
{"id_request":"011","comment_bapak":"Ini adalah tempat MD menuliskan komentarnya....<br>"},
{"id_request":"012","comment_bapak":null}
]
但是,当我像这样使用时,:
$.ajax({
url: '<?php echo base_url() . 'control_closing/getKomentarMD/' ?>',
type: 'POST',
dataType: 'json',
success: function(second) {
console.log(second);
}
});
它在firebug上给我这样的话:
POST http://localhost/portal/control_closing/getKomentarMD/ 200 OK 52ms
[Object { id_request="001", comment_bapak="Mohon kepada pihak IT, s...entang fast item...<br>"},
Object { id_request="002", comment_bapak=null},
Object { id_request="003", comment_bapak=null},
Object { id_request="005", comment_bapak=null},
Object { id_request="008", comment_bapak=null},
Object { id_request="009", comment_bapak="Test aja<br>"},
Object { id_request="010", comment_bapak=null},
Object { id_request="011", comment_bapak="Ini adalah tempat MD men...kan komentarnya....<br>"},
Object { id_request="012", comment_bapak=null}
]
结果不一样吗? 我用它,因为我想比较那些数组。
更新
Okey,我选择使用第二种选择:对象。现在, 可以给我一个让第一个数组像第二个数组的手吗? 感谢所有的回复,非常感谢。
答案 0 :(得分:0)
可以在如何访问不同数据方面找到差异。
在第一个例子中,你必须使用字符串作为标识符,在第二个例子中你不必使用字符串:
第一个例子
first["id_request"] //returns "001"
第二个例子
second.id_request //returns "001"
<小时/> 在更复杂的情况下,我个人更喜欢第二个结果,因为你可以链接它们
data.days.monday
,例如,在第一个例子中这变得有点麻烦。
两者都可以使用,这是个人偏好的问题
答案 1 :(得分:0)
全球范围内的结果相同。 FireFox Object
提供了丰富的信息。
要回答您的问题,通用数组和对象数组之间的区别是没有意义的。只有数组:
I_am_an_array = [something, something2, ...]
something
可以是字符串,数字,对象......
{"ok":"44", "ko":"hello"}
是一个Object String Notation,一种写对象的方法,JSON
(Javascript Object Notation)。
fool_array = [4,654,1.4, "hello", {"name":"john", "address":"malkovitch street"}, 4.42456343, "i dont want an iwatch", 999]
[{"id_request":"001","comment_bapak":"Mohon kepada pihak IT, selalu laporkan ke saya tentang fast item...<br>"},
{"id_request":"002","comment_bapak":null},
{"id_request":"003","comment_bapak":null},
{"id_request":"005","comment_bapak":null},
{"id_request":"008","comment_bapak":null},
{"id_request":"009","comment_bapak":"Test aja<br>"},
{"id_request":"010","comment_bapak":null},
{"id_request":"011","comment_bapak":"Ini adalah tempat MD menuliskan komentarnya....<br>"},
{"id_request":"012","comment_bapak":null}
]
是一个对象数组:
foreach(obj in yourArrayOfObjects){
console.log(obj.id_request);
}
答案 2 :(得分:0)
看起来您在服务器端没有为要返回的数据设置MIME
类型(application/json
)。因此,第一个和第二个示例之间的一个显着差异是从服务器返回的数据的type
。第一个是string
类型,第二个是object
类型。 $.get()
根据未明确提及类型作为第三个参数(在您的情况下)中返回的数据的MIME
类型来确定默认数据类型。因此,数据不会被解析为您要访问的对象,如first.id_request
或first[“id_request”]
。您必须使用$.parseJSON(first)
手动解析它才能访问属性。
在第二个示例中,您已明确提到dataType
为json
,这意味着,jQuery会自动解析为您返回的数据,而无需像第一个示例那样手动解析。< / p>
所以,你可以使用以下任何一种(它们是相同的!)。
$.get("<?php echo base_url(); ?>control_closing/getKomentarMD/", function(data) {
console.log(data);
}, 'json'); //note the 3rd argument as the data type
// ----------------------------------------
$.ajax({
url: "<?php echo base_url(); ?>control_closing/getKomentarMD/",
dataType: "json",
success: function(data) {
console.log(data);
}
});
注意:$.get()
只是$.ajax()
的包装。因此,您最好使用$.ajax()
,它更具可读性并提供更多选项。