2013-06-21 34 views
-1

我必须在页面中多次使用jQuery的$ .post函数。此外,我必须使用post方法返回的数据进行过滤。所以我把这样的帖子功能:如何在jquery块下执行函数

$(document).ready(function(){ 
function loadData(url){ 
$.post(url,function(data){ 
var $data = data; 
}); 
} 

var raw = loadData(page01.php).filter("#someId").html(); 
$("#content").html(raw); 

var raw = loadData(page02.php).filter("#anotherId").html(); 
$("#content2").html(raw); 
}); 

但它不工作。 任何帮助修改上述代码的工作将不胜感激。 问候

+2

什么是“不工作”是什么意思? – j08691

+1

这是一个不完整的问题,但它看起来像http://stackoverflow.com/questions/12475269/variable-doesnt-get-returned-from-ajax-function(和许多类似的)的副本 –

+1

函数不返回任何东西,即使它做到了,ajax也是异步的。 – adeneo

回答

1

你不能magicaly调用函数后的另一种方法,就像在jQuery的loadData('page02.php').filter你的函数需要返回这个工作jQuery对象,你的情况你loadData函数不返回任何东西。但是你不能返回jQuery对象,因为它是异步调用。如果服务器返回的内容是html,那么为了修改该html,您需要添加回调函数,因为这是在ajax调用之后应用某些东西的唯一方法。

您的代码应该是这个样子:

$(document).ready(function(){ 
    function loadData(url, callback) { 
     $.post(url, function(data){ 
      callback($(data)); // not sure if jquery detect if the content is 
           // html here, if yes then you can remove $() 
     }); 
    } 

    loadData('page01.php', function(html) { 
     var raw = html.filter("#someId").html(); 
     $("#content").html(raw); 
    }); 

    loadData('page02.php', function(html) { 
     var raw = html.filter("#anotherId").html(); 
     $("#content2").html(raw); 
    }); 
}); 
+0

工作,非常感谢。 $()必须保持回调,否则不能正常工作。 – stockBoi