编辑:通过在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(预定),我会得到所有设置的响应对象。因此,如果我看到数据,它必须在那里并在响应完成后显示。但是后来我无法访问该对象,我会用图片来展示我的意思。此外,有效和预定是两次尝试获得相同的信息。其他帖子对我尝试这样做的方式没有帮助,我已经检查过了
答案 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;请求不支持同步操作。 请注意,同步请求可能会暂时锁定浏览器, 在请求处于活动状态时禁用任何操作。