在javascript ajax请求中获取特定的数组键

时间:2018-08-02 14:22:53

标签: javascript php jquery json ajax

我有以下要每5秒运行的ajax请求。为了测试它,我只设置了几个警报。我在成功内部设置了一个alert('hello');,它每5秒触发一次。这样行得通。

if(response.update==true){部分无效。

我正在设置

<?php $data['update'] = "true"; return $data; ?>在ajax网址文件中。

我做错什么了吗?这是不正确的方法吗?我想念什么吗?

我什至尝试在ajax中设置datatype: json,并在ajax url中返回return json_encode($data);,但没有成功。

CODE

<script type="text/javascript">
        $(document).ready(function(){
        /* AJAX request to checker */
        setInterval(
            function (){
            $.ajax({
                type: 'POST',
                url: '<?php echo http() . $websitedomain .'/Manage/order_management/search_orders_checker.php'; ?>',
                datatype: html,
                data: { counter:10 },
                success: function(response){ 
                    if(response.update==true){
                    alert('yes');
                    }
                }
            })
        },5000);
        });
    </script>


编辑

控制台日志现在正在报告json响应。但是if (response.update == "true") { alert('yes'); }仍然无法正常工作。

console.log响应:{"update":"true"},并且每5秒更新一次,如预期的那样。

2 个答案:

答案 0 :(得分:0)

夫妇的事情在这里看起来不正确。首先...

<?php $data['update'] = "true"; return $data; ?>

如果这是您返回数据的方式,那么这不返回json。您需要将关联数组编码为json,然后将 echo 编码为标准格式。

<?php $data['update'] = "true"; echo json_encode($data); ?>

一旦有了,就可以使ajax请求期望响应为json。

$.ajax({
  type: 'POST',
  url: '<?php echo http() . $websitedomain .'/Manage/order_management/search_orders_checker.php'; ?>',
  //dataType tells ajax to auto-parse the json response into an object
  dataType: 'json', 
  data: { counter:10 },
  success: function(response){ 
    if(response.update==true){
      alert('yes');
    }
  }
})

答案 1 :(得分:0)

要使它正常运行,您需要具备以下所有条件:

1)PHP:

您需要

  • 将数据编码为JSON
  • 将数据回显到脚本的输出中,而不是将其返回到PHP中的某个地方
  • 在“更新”字段中返回布尔值true而不是字符串"true"

这是该代码的新代码:

<?php 
  $data['update'] = true; 
  echo json_encode($data); 
?>

2)JavaScript:

您需要将datatype: html更改为dataType: "json"

这是因为

  • JS变量区分大小写,因此jQuery无法识别 选项称为“数据类型”
  • 值“ json”必须为字符串(在您使用html之前,它实际上是对不存在的变量的引用
  • 指定“ json”告诉jQuery自动将响应解析为JSON,这意味着您不必自己调用JSON.parse() 在回调中。