我的代码是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);
答案 0 :(得分:0)
因为jQuery $.ajax request默认是异步的。
async(默认值:true)类型:Boolean默认情况下,发送所有请求 异步(即默认设置为true)。如果你需要 同步请求,将此选项设置为false。
虽然你可以改变它:
请注意,同步请求可能会暂时锁定浏览器, 在请求处于活动状态时禁用任何操作。
首次触发点击事件时会发生这种情况:
function(arr_db);
已执行且arr_db
尚未设置success
回调和arr_db=data;
第二次触发点击事件:
function(arr_db);
已使用第一回复中的arr_db
执行success
回调和arr_db=data;