基本上,我正在为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()
无济于事,我不知道为什么,因为我可能只是在解析错误
答案 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");
}
});