我需要将jquery $ .post调用返回的数据存储在名为result
的变量中。
下面的代码工作,除了第一次点击result
返回未定义...
在第二次单击它会按预期返回php文件中的数据。
感谢。
$('a').on('click',function(){
var cv = $(this).data('cv');
var url= '_php/myphp.php';
$.post(url,{contentVar:cv},function(data)
{
result = data
return result;
});
alert(result);
});
答案 0 :(得分:1)
您应该将结果用作全局变量。
全局变量将允许您使用范围之外的变量:
var result;
$(function(){
$('a').on('click',function(){
var cv = $(this).data('cv');
var url= '/echo/json/';
$.post(url,{contentVar:cv},function(data)
{
result = data;
//you don't need any return, its callback function
}).done(function(){
alert(result);
});
});
});
您可以找到有关以下内容的更多信息: http://snook.ca/archives/javascript/global_variable
答案 1 :(得分:1)
通过使用.done()
方法,您在等待AJAX调用以获得成功响应,然后提醒结果。
$('a').on('click',function(){
var cv = $(this).data('cv');
var url= '_php/myphp.php';
$.post(url,{contentVar:cv},function(data) {
result = data;
return result;
}).done(function() {
alert(result);
});
});
答案 2 :(得分:0)
试试吧,
var result=null;// initially initialize this variable
$('a').on('click',function(e){
e.preventDefault();// use this line to prevent its default behaviour
var cv = $(this).data('cv');
var url= '_php/myphp.php';
$.post(url,{contentVar:cv},function(data)
{
result = data;
alert(result);// first alert
return result;
});
alert(result);// its global now, check this too
});
如果这不能解决,请使用$.ajax()和async:false
选项。同步拨打Ajax code
,以便初始化result variable
,然后在result
之后获得Ajax call
。