ajax调用不能单击一下

时间:2016-08-15 21:04:50

标签: javascript ajax

我的代码是html:

HTML:

<div  id="all" aria-expanded="true">all</div>

我想要点击这个div时,ajax调用:

AJAX:

$("#all").click(function () {

    $( "#adv-article-list" ).empty();
    $("#adv-article-list-pagination").empty();
    $.ajax({
        url: 'ajax_index.php', 
        type: "POST",
        dataType:'json',
        data: {name: 1},
        success: function(data)
        {
            arr_db=data;
        }
    });
    function(arr_db);
})

我的代码工作正常,但没有一次点击。我必须在div上点击两次。 为什么?

PHP:

$userAnswer = $_POST['name'];
$servername = "localhost";
$username = "root";
$password = "";
$dbname="db";

$conn = new mysqli($servername, $username, $password, $dbname);
$conn->query("SET NAMES 'utf8'");

if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}

$result = $conn->query("SELECT * FROM wp_moeee ORDER BY  ID DESC");
$ar=array();

while ( $row = mysqli_fetch_assoc($result)){
    $ar[] = $row; // add the row in to the results (data) array
}

echo json_encode($ar);

1 个答案:

答案 0 :(得分:0)

因为jQuery $.ajax request默认是异步的。

  

async(默认值:true)类型:Boolean默认情况下,发送所有请求   异步(即默认设置为true)。如果你需要   同步请求,将此选项设置为false。

虽然你可以改变它:

  

请注意,同步请求可能会暂时锁定浏览器,   在请求处于活动状态时禁用任何操作。

首次触发点击事件时会发生这种情况:

  1. 已发送ajax请求,而不是
  2. function(arr_db);已执行且arr_db尚未设置
  3. ajax响应触发了jQuery&#39; success回调和arr_db=data;
  4. 第二次触发点击事件:

    1. 已发送第二个ajax请求,而不是
    2. function(arr_db);已使用第一回复中的arr_db执行
    3. 第二个ajax响应触发了jQuery&#39; success回调和arr_db=data;