通过ajax JSON得到未定义
Getting undefined via ajax JSON
当我使用chrome浏览器从控制台检查日志时,我一直得到sideType
未定义。没有向sideType
变量返回数据。
当我把console.log(sideType);
在sideGroupData()
函数-它工作良好,没有问题。
代码:
function sideGroupData(GroupID) {
$.getJSON("group_data.php",{GroupID:GroupID}, function(j){
return j;
});
}
function reloadProduct(productID) {
$.post("product.php", { productID:productID }, function(data) {
var sideType = sideGroupData(123);
console.log(sideType);
});
}
reloadProduct(999);
这是因为您在闭包中运行调用。ajax调用是异步进行的,这意味着即使您正在进行ajax调用,您的代码仍在继续移动:
function setVar () {
var retVal = 1;
$.ajax(..., function(data){
retVal = data; //retVal does NOT equal data yet, it's still waiting
});
return retVal; //will return 1 every time because code doesn't wait for ajax
}
var someVar = setVar(); // will be 1
如果您希望返回该值,请包含一个回调函数,以便在返回数据时运行,并使用提供的数据运行它,如下所示:
function sideGroupData(GroupID, callback){
$.getJSON('group_data.php', {GroupID: GroupID}, callback);
}
function reloadProduct(productID) {
$.post("product.php", { productID:productID }, function(data) {
sideGroupData(123, function(sideType){
console.log(sideType);
});
});
}
或者,在函数本身内部调用:
function reloadProduct(productID, groupId) {
var prod, sideType;
$.post("product.php", { productID:productID }, function(data) {
prod = data;
$.getJSON('group_data.php', {GroupID: groupId}, function(json){
sideType = json;
// you now have access to both 'prod' and 'sideType', do work here
});
});
}
sidegroupdata()
函数调用将立即返回—它将触发ajax请求并继续执行。这意味着sideType
被分配了一个空值,因为sideGroupData实际上并没有在ajax调用部分之后显式返回任何东西。
你在ajax请求中做ajax请求有什么原因吗?修改product.php
页面以返回包含该产品ID和单个响应中包含的"sidegroupdata"的数据结构不是更有意义吗?
相关文章:
- 从JSON API结果迭代时未定义
- json-api和错误结果:无法读取属性'长度'的未定义
- Javascript json返回未定义
- 访问嵌套 json 对象的属性将返回未定义
- JavaScript/jQuery JSON数组问题-值为未定义
- “未定义的索引:itemdetails”,当将JSON对象从JavaScript发送到PHP时
- JSON偶尔未定义-我该如何检查
- Json显示来自网站的数据显示仅未定义
- 返回List<字符串>Jquery中的from JSON调用具有未定义的长度
- Jquery从JSON获取数据(未定义)
- 使用 RESTful API,如果未定义特定的响应 json 级别,我如何在客户端不出错
- Jquery Ajax 和 Json:如何检查是否未定义
- JQUERY JSON返回未定义
- JSON对象属性未定义
- ie11中未定义FileReader和JSON对象
- Javascript - 无法读取未定义 - json 的属性 'x'
- 尝试检查未定义json对象的类型时出错
- 客户端未定义JSON服务类
- 在d3.js的外部文件中未定义JSON数据
- 未定义JSON错误请求