在Javascript中将函数赋值给value

时间:2017-11-10 20:32:03

标签: javascript ajax

美好的一天, 我尝试将变量分配给Ajax请求的结果。我尝试了下面的两个请求,没有结果(得到了“未定义”的答案)。 我不明白之间的区别:

var temp = obj.method(me, you);

var temp = (function () {
  obj.method(me, you);
})();

这是AJAX请求:

ObjID.prototype.getAjx = function(one, you){
   $.ajax({
        type: "post",
        url: "./php/getAJX.php",
        dataType: 'json',
        context: this,
        data: { one: one, two: two },
        success: function(data) {
            this.myProperty = data[0][0];
        },
        error:function(request, status, error) {
             console.log("Something went wrong." + request.responseText + status + error);
        } 
   });
}

是否相同? 谢谢你的帮助! :)

1 个答案:

答案 0 :(得分:1)

你展示的前两位代码有效地做了同样的事情。

然而,他们都没有做你认为他们做的事情。他们都没有在任何地方为你的AJAX调用分配返回值:

代码的第一行:

ObjID.prototype.getAjx = function(one, you){

只是将包含实际AJAX调用的函数分配给.getAjx的{​​{1}}属性。该函数不包含任何ObjID.prototype语句,并且在执行时不会返回任何内容。这就是你得到return的原因。

实际执行AJAX调用的代码是:

undefined

并且,您没有将该返回值分配给任何内容。如果你愿意,你需要写这样的东西:

 $.ajax({
      type: "post",
      url: "./php/getAJX.php",
      dataType: 'json',
      context: this,
      data: { one: one, two: two },
      success: function(data) {
          this.myProperty = data[0][0];
      },
      error:function(request, status, error) {
           console.log("Something went wrong." + request.responseText + status + error);
      } 
 });

JQuery AJAX调用 return a reference to a Promise object ,这就是你在那种情况下要存储的内容。