我正在做一个使用JQuery和Cakephp的应用程序.
在这里我使用如下所示从我的控制器端检索值
var getformid;
$.getJSON("http://localhost/FormBuilder/index.php/forms/getFormEntry", function(json) {
getformid=json.forms[0]["id"];
alert("Form id inside "+getformid);
});//json
alert("Form id ouside "+getformid);
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,$ .getJSON内部的内部警报给我正确的值为75但外部警报显示错误为getformid未定义..为什么?我们不能使用外面的getformid $ .getJSON.请建议我.我想利用该值来保存Field ..
编辑:如果我尝试使用像这样的代码
var getformid;
$.getJSON("http://localhost/FormBuilder/index.php/forms/getFormEntry", myCallback);
function myCallback (json) {
getformid = json.forms[0]["id"];
// You can work with the response here
}
Run Code Online (Sandbox Code Playgroud)
我收到错误,像myCallback没有定义.WHy所以?我也应该在函数myCallback()之外使用getformid值
您必须等到$.getJSON在开始使用它之前返回该值.所以,如果你这样做:
var test;
$.getJSON('url', function(data) {
test = data;
});
alert(test); // you will get undefined here
Run Code Online (Sandbox Code Playgroud)
这将提示undefined,因为JS不等待$.getJSON完成获取数据(AJAX根据定义是异步的),并且当测试尚未初始化时将调用alert.
您可能应该做的是将"外部"代码包装在某个函数中并从$.getJSON回调中调用该函数.
var test;
$.getJSON('url', function(data) {
test = data;
showAlert(); // this call will display actual value
});
function showAlert() {
alert(test);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7585 次 |
| 最近记录: |