Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php jQuery.inArray条件返回false,尽管json数组中存在元素_Php_Jquery_Json - Fatal编程技术网

Php jQuery.inArray条件返回false,尽管json数组中存在元素

Php jQuery.inArray条件返回false,尽管json数组中存在元素,php,jquery,json,Php,Jquery,Json,我试图做的是调用将数据从mysql加载到通过jQuery调用的php中,然后对数组进行json_编码,并通过标题“Content-type:application/json”将其发送到jQuery函数,该函数随后将数组作为数据进行处理,以更新页面上的特定元素 我已经到了最后一圈,让jQuery进行调用,php访问数据库,并将数据作为json数组发送回主页面,并用它们的新数据更新大部分元素。我一直在分析数组中某个元素的特定属性:确定数组中是否存在指定元素,如果存在,则禁用并隐藏输入元素 调用返回的

我试图做的是调用将数据从mysql加载到通过jQuery调用的php中,然后对数组进行json_编码,并通过标题“Content-type:application/json”将其发送到jQuery函数,该函数随后将数组作为数据进行处理,以更新页面上的特定元素

我已经到了最后一圈,让jQuery进行调用,php访问数据库,并将数据作为json数组发送回主页面,并用它们的新数据更新大部分元素。我一直在分析数组中某个元素的特定属性:确定数组中是否存在指定元素,如果存在,则禁用并隐藏输入元素

调用返回的是btn1:true是一个任意值,无论我如何检查它的存在性,inArray都会给我一个-1,这意味着,即使它作为数组的一个元素成功通过,我的代码也无法找到它

以下是进行呼叫和处理传入数据的代码:

<script type = "text/javascript"> 
$(document).ready(function () {
    $('#refresh').click(function () {
        $.get('includes/refresh.php', function (data) {
            if (jQuery.inArray(btn1, data) > -1) {
                $('#btn1').prop("disabled", true);
                $('#btn1').hide();
            }
        });
    });
}); 
</script>
下面是一个例子,虽然没有确切了解数组的格式,但是在这里得到积极的结果并没有帮助

下面是从mysql中提取数据并将其作为json数组发送回的代码:

if (isset($_SESSION['id'])) {
    $divs = array ();
    $divs['item'] = $row['item'];
    $divs['cost'] = "Ticket price: ".$row['cost'];
    for ($i = 1; $i < 20; $i++) {
        $divs['tname'.$i] = $row['t'.$i];
        if ($row['t'.$i] != "") {
            $divs['btn'.$i] = "true";
        }
    }
    $divs['end'] = $row['end'];
    $divs['winner'] = $row['winner'];
    header('Content-type: application/json');
    echo json_encode($divs);
    die();
} else {
    // nothing to refresh. clear the page and prompt user to start a new raffle.
}
。。。这是我想让它消失的按钮:

<input id="btn1" class="submit" name="t1" type="submit" value="Buy!" />
总之,调用正在运行,数据被从mysql中拖出并编译成json编码的数组,该数组随后被传递给调用脚本并被调用脚本接收。我的元素检查无法在数组中找到我知道的内容。我忽略了什么?

两件事。使用而不是get,因为您得到的是JSON

$.getJSON('includes/refresh.php', function (data)...`
你正在发送这些数据

$divs['btn'.$i] = "true";
// which gives $divs['btn1'] = "true";
但您将btn1用作变量,而不是字符串文字

if (jQuery.inArray(btn1, data) > -1)  {
它是一个键,而不是数组中的变量

应该是

if (data.btn1) {
// or to be really specific:
// if (typeof data.btn1!='undefined' && data.btn1)
另外,虽然真是真,假也是假,但我认为你指的是$divs['btn'.$I]=true

这也不是问题的一部分但是

$('#btn1').prop("disabled", true);
$('#btn1').hide();
不需要一直选择元素。连锁指挥

$('#btn1').prop("disabled", true).hide();

每次选择它时,jQuery都必须搜索它。如果无法链接它们,请设置一个变量$btn=$'btn1';并使用$btn1.hide$btn1.show

上述回答btn1:true不是数组您使用的btn_1是变量btn_1不是字符串文字“btn_1”变量btn1的值是多少?您是指字符串文字btn1吗?这里是数组中的示例,尽管语法很差。返回的内容正是这样:{项目:200000,00,成本:票价:2500,tname1:test,btn1:true,tname2:,tname3:,tname4:,tname5:test,btn5:true,tname6:test,btn6:true,tname7:,tname8:,tname9:,tname10:,tname11:,tname12:,tname13:,tname14:,tname15:,tname16:,tname17:,tname18:,tname19:,end:0,winner:}当然,这与此无关;如果jQuery.inaraybtn1、jQuery.parseJSONdata>-1,请尝试使用jQuery.parseJSON{True是真实的……而且大部分是任意的。我只需要元素本身就可以了解这件事的真相。字符串、布尔值、int或float将用于低占位符的用途。还有,huzza!我在代码中到处寻找那个流氓下划线。似乎我的JSFiddle被处理得太多了……甚至不够删除代码中的下划线并没有进入测试。现在仔细看看。感谢到目前为止的指导。:这是一个旁白。真正的问题也突出了。谢谢。我需要一些时间来应用您的建议。:先生,您刚刚安排了6小时的facepalm/head desk会议。非常感谢。