【问题标题】:pass data out from jquery get method从 jquery get 方法中传递数据
【发布时间】:2014-03-20 10:17:15
【问题描述】:
var transactionID;
$.get('http://127.0.0.1/getId', null,function(data) {
    transactionID = data;
    alert(transactionID);
});
alert(transactionID);

get 方法中的警报正确返回值。但是,当 get 方法之外的第二个警报中的 transactionID 仍然为 null 时?如何正确传递get方法的返回数据?

【问题讨论】:

  • 那是因为javascript中的控制流。要正确获取 transactionID,您应该在回调函数中使用 get。

标签: jquery get


【解决方案1】:

$.get 是异步执行的,即将请求发送到服务器并执行后面的行。 所以外面的alert会在服务器返回回复之前执行,当它执行时会执行get方法中的函数。

为了使用返回的值,请将任何需要的代码放在get 调用中,例如调用另一个函数,将事务ID 作为参数传递给它:

var transactionID;
$.get('http://127.0.0.1/getId', null,function(data) {
    transactionID = data;
    alert(transactionID);
    doSomethingWithID(transactionID);
});

或者只是调用一个使用它的函数:

$.get('http://127.0.0.1/getId', null,function(data) {
    transactionID = data;
    alert(transactionID);
    doSomethingWithID();
});
function doSomethingWithID()
{
  // code that uses transationID
}

【讨论】:

  • 感谢 cmets。但是,我需要设置全局变量,并且不能将所有方法都放在该 get 方法中。有没有办法做到这一点?
  • 您已经在设置全局变量的值,但问题是您需要在设置它的值后访问它,并且保证只有在服务器响应返回后才能设置它。您不必将所有方法都放在 get 方法中,您只需要 get 方法来告知何时设置值,例如有一个布尔变量在 get 完成时设置为 true,代码将一直等到这个值是真的。但我不会那样做。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多