javascript / jquery中数组对象和公共数组的不同之处

时间:2015-08-19 09:37:08

标签: javascript php jquery

我有一个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,我选择使用第二种选择:对象。现在, 可以给我一个让第一个数组像第二个数组的手吗? 感谢所有的回复,非常感谢。

3 个答案:

答案 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_requestfirst[“id_request”]。您必须使用$.parseJSON(first)手动解析它才能访问属性。

在第二个示例中,您已明确提到dataTypejson,这意味着,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(),它更具可读性并提供更多选项。