JavaScript变量在ajax之外未定义

时间:2016-07-12 08:58:53

标签: javascript jquery ajax

我制作一个简单的脚本,这样一段代码就可以循环运行。

alert('teste fora do ajax' + num_rows_session_php_teste);

我只在这里发布了相关部分,问题出在哪里。所以我在ajax函数之外创建变量,所以我可以在ajax函数内更新它们。这段代码每5秒运行一次,所以即使首先没有调用ajax,变量也应该随时更新。我的问题是,当我在ajax函数中执行警报时,值是正确的,但是ajax函数之外的警告说该变量是未定义的。 即使代码运行了10次, $.ajax({ url: 'verify_num_rows.php', success: function(){ num_rows_php = "<?php echo $my_num_rows; ?>"; num_rows_session_php = "<?php echo $_SESSION['transaction_count']; ?>"; num_rows_session_php_teste = "<?php echo $_SESSION['teste_num']; ?>"; alert('num_rows_session' + num_rows_session_php); alert('num rows session php teste' + num_rows_session_php_teste); if (num_rows_session_php_teste != num_rows_session_php) { alert(num_rows_session_php_teste); // alert (num_rows_session_php); $('#tbody').load('table_body.php') $('#myfooter').load('myfooter.php') $('#my-list').load('mylist.php') } }, }); 仍未定义。这是为什么?

编辑:

我试过这个:

with t1 as (
select 'aK' col1, 'Mbcd' col2, 'ABc' col3, 'defgh' col4 
---
SELECT LEFT(col, LEN(col) - 12) col1,
      RIGHT(LEFT(col, LEN(col) - 8), 4) col2,
      RIGHT(LEFT(col, LEN(col) - 4), 4) col3,
      RIGHT(col, 4) AS col4
FROM
(
    SELECT col1+','+col2+','+col3+','+col4 AS col
    FROM t1
) t;

ajax成功函数内的所有内容,并且在警报发生时该变量未定义。

2 个答案:

答案 0 :(得分:0)

您不能指望$ .ajax为num_rows_session_php_teste分配值。由于JS本质上是异步的,因此在$ .ajax发生之前可能会调用alert。因此,从警报访问时,num_rows_session_php_teste可能是未定义的。

答案 1 :(得分:0)

尝试在ajax函数上添加async:false,

$.ajax({
     url: 'verify_num_rows.php',
     async: false,
     success: function(){
     }
})