如何給JQ的ajax方法中的success()傳入引數?
所以,我就直接這樣子寫了:
<script> function getTypeList(name){ $.ajax({ url : '<c:url value="admin/type_loadTypeList.action"/>', type : 'get', contentType : "text/html;charset=utf-8", dataType : 'json', success : function(data,name) { alert(name);//檢視name的值 mycallback(data,name);//回撥函式 } }); } </script>
當時我傳入name="Java"。
當我執行後,alert(name)返回的值卻是“success”!!
怎麼回事呢?
原來success: function(data,name)是Ajax在請求成功後自動呼叫的,所以這個方法是Ajax呼叫的,那麼該方法的引數(data,name)便是Ajax提供的了。(js學的差了點,所以當時腦子沒轉過來)
其中function(data,name)的引數data是客戶端請求後臺,由後臺返回的值。
引數name這是個比較特殊的引數名,因為剛剛好在Ajax中有個引數名也叫name
如果你把function(data,name)的引數name改為其它的話,那麼就不會返回為"success",而是返回為空字串了。(當然還有可能你取了跟Ajax內部其它的引數名相同的名字,那麼返回便是Ajax的引數的引數值了)
==============================解決================
那麼問題來了:
給function()傳入的引數名跟Ajax的引數名相同就會返回Ajax的引數值,這不是我們想要的。
但是,你穿入的引數名跟Ajax的引數名不同,就會找不到該引數值,這也不是我們想要的;(因為這個方法是由Ajax來呼叫,如果Ajax沒有該引數,那麼該引數就為空)
那麼該怎麼辦呢?
其實,我們並不需要傳入引數,直接在把name引數傳給mybackdata(data,name),而不需要通過function()來傳遞。(此處的name引數是指getTypeList(name)中的name引數)
程式碼如下:
function getTypeList(name){ $.ajax({ url : '<c:url value="admin/type_loadTypeList.action"/>', type : 'get', contentType : "text/html;charset=utf-8", dataType : 'json', success : function(data) { mycallback(data,name); } }); }
總結:
Ajax的請求成功呼叫的方法中的引數是由Ajax負責傳遞。
本人文筆寫的不太好,希望各位大牛多多點評指點。。