我使用ajax从我的数据库中检索数据并将其存储为数组,然后返回结果。我的目标是,当用户点击“Click Me”按钮时。我想从返回的数据中提醒第一个数组。但是,我的下面的代码没有返回任何内容。
<input type="button" id="click_me" value="Click Me"/>
var data_array;
$.post('generate.php', {id: id}, function(data){
data_array= data;
});
$('#click_me').click(function(){
alert(data_array[0]);
});
generate.php
<?php
header('Content-Type: application/json');
$array = array('Hello', 'Good Morning', 'Nice to meet you');
echo json_encode($array);
?>
答案 0 :(得分:1)
不要将数据数组声明为局部变量,通过在嵌套成功回调声明中删除'var'来使用全局变量:
$.post('generate.php', {id: id}, function(data){
data_array= data;
});
答案 1 :(得分:0)
由于ajax请求是异步的,因此无法正常工作。你可以做的一件事是
var data_array;
$.post('generate.php', {id: id}, function(data){
data_array= data;
$('#click_me').click(function(){
alert(data_array[0]);
});
});
或者,如果您确定仅在收到数据后单击按钮,则您的当前代码才能正常工作
第三种选择是在用户点击按钮
时检索数据 $('#click_me').click(function(){
$.post('generate.php', {id: id}, function(data){
data_array= data;
alert(data_array[0]);
});
});
答案 2 :(得分:0)
我看到你想要使用json和Javascript。发送带有mime类型application/json
的json时,它会自动转移到数组中。这是因为json是一种受人尊敬的数据类型,所有主流浏览器都支持它。
这是我的jquery / javascript:
$(document).ready(function () {
$('body').on('click', '#clickme', function(){
$.post('json.php', function (json){
// Now do stuff with the json
var table = '';
for(q = 0; q < $(json).size(); q++){
table += '<tr><td>' + json[q] + '</td></tr>';
}
var content = '<table>' +table+ '</table>';
$('#put_stuf_inside_me').html(content);
});
});
});
我的HTML:
<input type="button" id="clickme" value="do magic" />
<div id="put_stuf_inside_me"></div>
我的php:
<?php
header('Content-Type: application/json');
$array = array('Hello', 'Good Morning','Nice to meet you','I put something over here');
echo json_encode($array);
?>
你看它有多容易!