我想调用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;
}
)
}
答案 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)
}
}
)
}