jQuery.ajax不能实现return值调用问题

我们使用jQuery.ajax函数是不能实现success方法return值的,而有时候我们需要对成功返回的数据进行处理,一般来说,与服务器交互后会返回很多的数据,而有些数据需要进行特别处理,这时需要实现success方法return,但jQuery.ajax中是无法实现的,传统的jQuery.ajax使用如下:

  1. jQuery.ajax({
  2. type: "POST",
  3. url: "some.php",
  4. data: "name=John&location=Boston",
  5. success: function(msg){
  6. return msg;
  7. }
  8. });

如上:return msg;操作是无效的。

我们与服务器交互后,返回数据在msg中,但我们需要实现一个return,那么如何解决这个问题。

思路,通过传入一个函数,jQuery.ajax触发success事件调用这个函数,并把返回的数据msg传递给传入的函数,实现函数对数据的处理。

为了解决这个问题,写了一个实例,分别有三个文件,一个html文件、js文件和PHP文件。

实例分析:

一,JS部分

  1. var biuuu = {};
  2. biuuu._ajax = function(url,data,datatype,_success_func,_error_func){
  3. jQuery.ajax({
  4. type:"post",
  5. url:url,
  6. data:data,
  7. dataType:datatype,
  8. success:function(info){
  9. _success_func(info);
  10. },
  11. error:function(){
  12. _error_func();
  13. }
  14. });
  15. }

传入四个参数,分别是

url:是处理ajax提交的PHP文件,如下:biuuu.php

data:传入的post数据,如下:do=test

datatype:表示数据类型,如下:json

_success_func:处理成功操作的函数名,如下:biuuu.succfunction

_error_func:处理失败操作的函数名,如下:biuuu.failfunction

二,HTML部分(触发事件)

  1. <script type="text/javascript" src="http://code.jquery.com/jquery.js"></script>
  2. <script type="text/javascript" src="biuuu.js"></script>
  3. <script type="text/javascript">
  4. <!--
  5. jQuery(document).ready(function(){
  6. jQuery("#open").click(function(){
  7. biuuu._ajax("biuuu.php",'do=test','json',biuuu.succfunction,biuuu.failfunction);
  8. });
  9. });
  10. biuuu.succfunction = function(info){
  11. alert(info.message);
  12. }
  13. biuuu.failfunction = function(){
  14. alert('fail');
  15. }
  16. //-->
  17. </script>
  18. <a href="#" >test</a>

当点击test后,触发ajax提交,实功调用biuuu.succfunction函数,失败调用biuuu.failfunction函数

三,PHP部分

  1. <?php
  2. $info = array ('message' => 'biuuu is success','bool' => TRUE );
  3. print_r ( json_encode ( $info ) );
  4. exit ();
  5. ?>

返回一个json数据

解决方法其实很简单,用传入函数名的方法来解决jQuery.ajax不能实现return值调用问题。

点我下载 如果解决jQuery.ajax不能实现return值调用问题 实例