针在大海捞针jQuery

时间:2013-07-15 12:35:18

标签: php jquery ajax json

基本上,我正在为Javascript动态生成 JSON数组,然后我正在进行Ajax调用,从API返回 JSON 数据,我想查看来自 Ajax JSON响应的对象内部的值,看它是否与我的 JSON数组匹配,我尝试过以下操作:

我的动态JSON数组 - JSON.php

global $wpdb;
$Ids = array();
$table_name = $wpdb->prefix . "videos";
$idList = $wpdb->get_results("SELECT `videoId` FROM `$table_name`");
foreach($idList as $ID) {
     $Ids[] = $ID->videoId;
}
echo json_encode(array('IdList' => $Ids));

我的动态JSON输出示例 - JSON.php

{"IdList":["47","55"]}

我的动态JSON数组 - Javascript

var Ids = null;
jQuery.ajax({
    type: "GET",
    url: pluginURL + "/JSON.php",
    data: "ajaxAction=getIds&rand="+Math.floor(Math.random()*10000),
    success: function(data) {
        Ids = jQuery.parseJSON(data);
    },
    error: function() {
        alert("Error");
    }
});

这就是生成存储在我的数据库中的ID数组的代码,然后我想使用 AJAX 调用从API返回 JSON响应检查这些ID,这是返回API响应的代码

jQuery.ajax({
    type: "GET",
    url: apiURL + "video/" + Username,
    success: function(data) {
        Parsed = jQuery.parseJSON(data);
        jQuery.each(Parsed.user_media, function(i,v){
            id = v['id'];
            if(jQuery.inArray(id,Ids['IdList']) !== -1) {
               //this isn't working!
            }
        });
    },
});

从AJAX调用输出的示例数据

{"user_media":[{"id":"2"},{"id":"44"}]}

正如你所看到我试图利用jQuery.inArray()无济于事,我不知道为什么,因为我可能只是在解析错误

1 个答案:

答案 0 :(得分:0)

可能在第Ids秒之前未设置ajax call个数据。在第一个ajax电话ajax上打包第二个success来电,如下所示:

var Ids = null;
jQuery.ajax({
    type: "GET",
    url: pluginURL + "/JSON.php",
    data: "ajaxAction=getIds&rand=" + Math.floor(Math.random() * 10000),
    success: function(data) {
        Ids = jQuery.parseJSON(data);

        jQuery.ajax({
            type: "GET",
            url: apiURL + "video/" + Username,
            success: function(data) {
                Parsed = jQuery.parseJSON(data);
                jQuery.each(Parsed.user_media, function(i, v) {
                    id = v['id'];
                    if (jQuery.inArray(id, Ids['IdList']) !== -1) {
                        //this isn't working!
                    }
                });
            },
        });
    },
    error: function() {
        alert("Error");
    }
});