2012-03-22 71 views
0

嗨,我的jQuery回调函数不起作用。jquery post call call not works

Competitor = { 
    addCompetitorForSave: function($data) { 

      $.post('/competition/add', $data , function($json) { 

      }, 'json'); 

      return $json; // I need to return json data . 
     } 
} 

此后我需要做下一步。

var data = $('someForm').serialize(); 
var $json = Competition.addCompetitorForSave(data); 

非常感谢。

+0

我需要返回json – Vahan 2012-03-22 15:41:19

+0

您需要等待结果,然后才能对其执行任何操作。 – 2012-03-22 15:42:26

+0

这不会工作得很好。你需要重新考虑你的设计:) – Supr 2012-03-22 15:42:45

回答

3

post异步完成,但alert运行同步。因此,qa值尚未设置。这里不需要返回值,而需要将其他回调传递给addCompetitorForSave

addCompetitorForSave: function($data, callback) { 
    var qa = 0; 
    $.post('/competition/add', $data , function($json) { 
    callback($json); 
    }, 'json'); 
} 

var obj = ...; 
obj.addCompetitorForSave(theData, function(qa) { 
    alert(qa); 
}); 
+0

谢谢你的作品完美。 – Vahan 2012-03-22 15:55:50

3

在帖子有机会完成之前调用警报。将警报置于回调中。

+1

返回qa没有任何意义,因为在addCompetitorForSave返回之前不会调用回调函数。 – tinyd 2012-03-22 15:43:01

+0

我知道,我只是在正确的方向轻推以理解问题;) – Supr 2012-03-22 15:44:30

+0

绝对 - 我添加了一些更多的推动操作:) – tinyd 2012-03-22 16:26:26

0

尝试:

addCompetitorForSave: function($data) { 

     var qa = 0; 


     $.post('/competition/add', $data , function($json) { 
      qa = $json; //this does not work 
      alert(qa); //getting 0; 
     }, 'json'); 

     return qa; 
    }