我們使用jQuery.ajax函數是不能實現success方法return值的,而有時候我們需要對成功返回的數據進行處理,一般來說,與服務器交互后會返回很多的數據,而有些數據需要進行特別處理,這時需要實現success方法return,但jQuery.ajax中是無法實現的,傳統的jQuery.ajax使用如下:
- jQuery.ajax({
- type: "POST",
- url: "some.php",
- data: "name=John&location=Boston",
- success: function(msg){
- return msg;
- }
- });
如上:return msg;操作是無效的。
我們與服務器交互后,返回數據在msg中,但我們需要實現一個return,那么如何解決這個問題。
思路,通過傳入一個函數,jQuery.ajax觸發success事件調用這個函數,并把返回的數據msg傳遞給傳入的函數,實現函數對數據的處理。
為了解決這個問題,寫了一個實例,分別有三個文件,一個html文件、js文件和PHP文件。
實例分析:
一,JS部分
- var biuuu = {};
- biuuu._ajax = function(url,data,datatype,_success_func,_error_func){
- jQuery.ajax({
- type:"post",
- url:url,
- data:data,
- dataType:datatype,
- success:function(info){
- _success_func(info);
- },
- error:function(){
- _error_func();
- }
- });
- }
傳入四個參數,分別是
url:是處理ajax提交的PHP文件,如下:biuuu.php
data:傳入的post數據,如下:do=test
datatype:表示數據類型,如下:json
_success_func:處理成功操作的函數名,如下:biuuu.succfunction
_error_func:處理失敗操作的函數名,如下:biuuu.failfunction
二,HTML部分(觸發事件)
- <script type="text/javascript" src="http://code.jquery.com/jquery.js"></script>
- <script type="text/javascript" src="biuuu.js"></script>
- <script type="text/javascript">
- <!--
- jQuery(document).ready(function(){
- jQuery("#open").click(function(){
- biuuu._ajax("biuuu.php",'do=test','json',biuuu.succfunction,biuuu.failfunction);
- });
- });
- biuuu.succfunction = function(info){
- alert(info.message);
- }
- biuuu.failfunction = function(){
- alert('fail');
- }
- //-->
- </script>
- <a href="#" id="open">test</a>
當點擊test后,觸發ajax提交,實功調用biuuu.succfunction函數,失敗調用biuuu.failfunction函數
三,PHP部分
- <?php
- $info = array ('message' => 'biuuu is success','bool' => TRUE );
- print_r ( json_encode ( $info ) );
- exit ();
- ?>
返回一個json數據
解決方法其實很簡單,用傳入函數名的方法來解決jQuery.ajax不能實現return值調用問題。
點我下載 如果解決jQuery.ajax不能實現return值調用問題 實例