调用jQuery JSON函数并传回生成的有效负载

时间:2010-02-16 19:54:44

标签: jquery json parameters

我想调用jQuery JSON函数并将结果作为JSON对象(Javascript数组?)传回,但我不太了解这里发生的事情的动态。

myJSON = myFunction(productNo)
$.each(myJSON, function(i,user){
   alert (user.description)
}


function myFunction(productNo)
{
  $.getJSON
  (
      "processors/process_1.php",
       { productNo: 'ABC' },                
       function(data)
       {        
           return data;
       }
   )        
}

2 个答案:

答案 0 :(得分:1)

Ajax是异步的,所以你不能从回调中返回一些内容 - 它会在你的调用函数退出后 之前完成。相反,你需要在回调中完成所有工作。当ajax调用完成时,你应该使用一个闭包来传递你想要完成的工作:

myFunction(productNo, function(myJSON) {
    $.each(myJSON, function(i,user){
       alert (user.description)
    }
});


function myFunction(productNo, onComplete)
{
  $.getJSON
  (
      "processors/process_1.php",
       { productNo: 'ABC' },                
       onComplete
   )        
}

答案 1 :(得分:0)

你得到的是一个原生的Javascript数据结构(JSON代表Javascript Object Notation。我不确定我理解你的问题......你问这里发生了什么?

您现在正在做的是迭代您获得的data对象的属性(采用JSON格式)。您是否期待某种user对象列表?每个人都有description属性?

编辑

好的,所以在阅读你的评论后我想我已经找到了你的问题 - 因为AJAX是异步的,你只能在请求完成后处理数据。这就是为什么你没有定义,因为浏览器继续执行代码而不等待请求完成。您需要做的是处理回调中的数据:

function myFunction(productNo)
{
  $.getJSON(
      "processors/process_1.php",
       { productNo: 'ABC' },                
       function(data) {
           $.each(data, function(i, user){
                 alert (user.description)
           }
       }
   )        
}