如何从ajax响应对象

时间:2016-08-05 17:29:31

标签: jquery ajax

编辑:通过在ajax()中完成我所需要的事情来解决。完成后,我不知道这是可用的回调之一,直到我更多地研究它。

好的,这是我的代码。我试图得到一些用PHP填充的ID,然后使用ajax运行查询,看看是否设置了一些相关的属性。我想访问responseJSON属性,但如果我尝试直接访问它是未定义的。但是,如果我只是编写整个变量来控制它的全部,那么我想我错过了一些东西。我也尝试将响应复制到全局变量,但这只是给了我在开头设置的空值。我该如何访问回复?

JS

  <script>
var valid;
$(document).ready(function(){

//get all appointment numbers


     count=0;
appointment_nums = [];
$('.mgrid_table > tbody > tr').each(function() {

    var temp = ($(this).find('td').eq(3).find('label').html());
    appointment_nums.push(temp);
    });
    appointment_nums = appointment_nums.filter(function(n){ return n != undefined }); 
    appointments = appointment_nums.length;

    scheduled = $.ajax({
        type:"post",
        url: "../testrequest.php",
        data : {appointment_nums:appointment_nums},
        dataType:'json',
        done:function(response){
        valid=response;
        }
    })
    console.log(valid);
    console.log(scheduled);


    $('table:nth-of-type(2) > tbody > tr > td:nth-of-type(2)').each(function() {                    

    if($(this).children().length < 1){
    $(this).append('<a href="index.php?doctor=test&a='+appointment_nums[count]+'">Schedule Appointment </a>');
    }
    count = count + 1 ;
    });


 });
</script>

php

$appointment_numbers = (isset($_POST['appointment_nums'])) ?      $_POST['appointment_nums']:0; 
 if ($appointment_numbers!=0){
$appointments_scheduled =array();
foreach ($appointment_numbers as $apt_num){
$sql = 'SELECT event_id FROM '.TABLE_APPOINTMENTS_SCHEDULING.' WHERE appointment_number = "'.$apt_num.'"'; 
  $res = database_query($sql); 
array_push($appointments_scheduled, empty($res));

}

编辑:我不认为这是重复的,获得相同信息的方式略有不同,但问题不一样。如果我在任何地方执行console.log(预定),我会得到所有设置的响应对象。因此,如果我看到数据,它必须在那里并在响应完成后显示。但是后来我无法访问该对象,我会用图片来展示我的意思。此外,有效和预定是两次尝试获得相同的信息。其他帖子对我尝试这样做的方式没有帮助,我已经检查过了 enter image description here

1 个答案:

答案 0 :(得分:1)

$.ajax方法中,属性done是一个回调函数,在成功响应后执行。只有那里而不是才能访问你的json:

scheduled = $.ajax({
    type:"post",
    url: "../testrequest.php",
    data: {appointment_nums:appointment_nums},
    dataType: 'json',
    done: function(response){
        valid=response;
        console.log(valid);
    }
})

有关jQuery ajax方法的更多信息here

如果您想使用异步ajax调用,则需要设置:

async: false
  

async(默认值:true)类型:Boolean默认情况下,发送所有请求   异步(即默认设置为true)。如果你需要   同步请求,将此选项设置为false。跨域请求   和dataType:&#34; jsonp&#34;请求不支持同步操作。   请注意,同步请求可能会暂时锁定浏览器,   在请求处于活动状态时禁用任何操作。