美元.基于ajax的JSON响应的inArray

$.inArray on JSON response from ajax

本文关键字:响应 inArray JSON 美元 ajax 基于      更新时间:2023-09-26

我试图检查$.inArray从ajax调用收到的数据。但不管我如何检查它-当脚本运行时,它总是-1

更新:首次声明shm_kupa为数组(shm_kupa = [];)

success: function(data) {
    $('ul').html('');
    $.each(data, function(i, value){
        if ($.inArray(data[i].ID, shm_kupa) == -1){
           $('ul').append('<li class="' + data[i].SHM_KUPA + '" data-kupa-id="' + data[i].ID + '">' + data[i].SHM_KUPA + '</li>')
         }
         console.log($.inArray(data[i].ID,shm_kupa)); - Output: -1
         console.log('ID: ' + data[i].ID + ' shm_kupa: ' + shm_kupa); - Output: "ID: 132 shm_kupa: 132,170"
    })
}

当我执行console.log时,它显示的是ID: 132 shm_kupa: 132,170,所以问题可能不是shm_kupa,因为它已成功声明。

我找不到这个问题的答案。

$. inarray(),第一个参数是value(在您的情况下为132),第二个参数必须是array(这里的"132,170"是一个字符串)。

请将shm_kupa的值替换为像[132,170]这样的数组;)

例如

var shm_kupa = [132,134];
console.log($.inArray(132,shm_kupa)); // Result 0

这个不行

var shm_kupa = "132,134";
console.log($.inArray(132,shm_kupa)); // Result -1

感谢大家的帮助,但是parseInt()对收到的数据修复了我的问题。

答:

success: function(data) {
    $('ul').html('');
    $.each(data, function(i, value){
        if ($.inArray(parseInt(data[i].ID), shm_kupa) == -1){
           $('ul').append('<li class="' + data[i].SHM_KUPA + '" data-kupa-id="' + data[i].ID + '">' + data[i].SHM_KUPA + '</li>')
         }
         //console.log($.inArray(data[i].ID,shm_kupa));
         //console.log('ID: ' + data[i].ID + ' shm_kupa: ' + shm_kupa); -
    })
}