如題:
一個頁面中有多個相同的form,寫了多個$.ajax的方法,input的id都是一樣的,分別去發起非同步請求,後寫的$.ajax方法,資料發送不出去,控制台也沒有報錯?
頁面先載入的ajax方法
function Ajax(obj){ $.ajax({ type:"post", url:"ajax.asp", data:"Nickname="+$('#inputUser').val(), beforeSend:function(){ $('#yhm').append(process_request); }, //使用者名稱檢測 success:function(res){ if(res>"0"){ $('#inputUser').attr('class','FrameDivWarn'); showInfo("yhm",msg_un_registered); change_submit("true");//禁用提交按鈕 } if(res=="0"){ $('#inputUser').attr('class','FrameDivPass'); showInfo("yhm",msg_can_rg); change_submit("false");//禁用提交按鈕 $("#yhm").attr('class','ts-lg'); } } });};
頁面後載入的ajax方法
//彈窗-非同步function tc_Ajax(obj){ $.ajax({ type:"post", url:"ajax.asp", data:"Nickname="+$('#inputUser').val(), beforeSend:function(){ $('#tc_yhm').append(process_request); }, //使用者名稱檢測 success:function(res){ if(res>"0"){ $('#inputUser').attr('class','FrameDivWarn'); showInfo("tc_yhm",msg_un_registered); change_submit("true");//禁用提交按鈕 } if(res=="0"){ $('#inputUser').attr('class','FrameDivPass'); showInfo("tc_yhm",msg_can_rg); change_submit("false");//禁用提交按鈕 $("#tc_yhm").attr('class','ts-lg'); } } });};
情況說明:
一個頁面有兩個註冊,一個是在首頁上的非同步驗證是可以用的。一個是點登入彈窗非同步驗證用的。
通常這種情況,實際開發中是怎麼處理,用什麼方式去做更合理。(能不能把多個相同的驗證整合到一個ajax方法中?)
後載入的ajax方法,查看HTTP,資料並沒有發送到伺服器端,是什麼情況?
先寫的ajax方法,資料是可以成功發送到伺服器端的,並且傳回值也對。
問題:是什麼地方引起了衝突了?
回複內容:
如題:
一個頁面中有多個相同的form,寫了多個$.ajax的方法,input的id都是一樣的,分別去發起非同步請求,後寫的$.ajax方法,資料發送不出去,控制台也沒有報錯?
頁面先載入的ajax方法
function Ajax(obj){ $.ajax({ type:"post", url:"ajax.asp", data:"Nickname="+$('#inputUser').val(), beforeSend:function(){ $('#yhm').append(process_request); }, //使用者名稱檢測 success:function(res){ if(res>"0"){ $('#inputUser').attr('class','FrameDivWarn'); showInfo("yhm",msg_un_registered); change_submit("true");//禁用提交按鈕 } if(res=="0"){ $('#inputUser').attr('class','FrameDivPass'); showInfo("yhm",msg_can_rg); change_submit("false");//禁用提交按鈕 $("#yhm").attr('class','ts-lg'); } } });};
頁面後載入的ajax方法
//彈窗-非同步function tc_Ajax(obj){ $.ajax({ type:"post", url:"ajax.asp", data:"Nickname="+$('#inputUser').val(), beforeSend:function(){ $('#tc_yhm').append(process_request); }, //使用者名稱檢測 success:function(res){ if(res>"0"){ $('#inputUser').attr('class','FrameDivWarn'); showInfo("tc_yhm",msg_un_registered); change_submit("true");//禁用提交按鈕 } if(res=="0"){ $('#inputUser').attr('class','FrameDivPass'); showInfo("tc_yhm",msg_can_rg); change_submit("false");//禁用提交按鈕 $("#tc_yhm").attr('class','ts-lg'); } } });};
情況說明:
一個頁面有兩個註冊,一個是在首頁上的非同步驗證是可以用的。一個是點登入彈窗非同步驗證用的。
通常這種情況,實際開發中是怎麼處理,用什麼方式去做更合理。(能不能把多個相同的驗證整合到一個ajax方法中?)
後載入的ajax方法,查看HTTP,資料並沒有發送到伺服器端,是什麼情況?
先寫的ajax方法,資料是可以成功發送到伺服器端的,並且傳回值也對。
問題:是什麼地方引起了衝突了?
一. 你的這兩個方法的代碼基本上是一樣的, 不一樣的地方只是去操作不對DOM節點.
所以, 你可以把要操作的DOM節點 做為 參數傳遞過去, 這樣就可以共用同一個方法.
二. 你所描述的,你第一個的Ajax發送的資料中內容為空白, 說明你的代碼執行的時候,你的那個框還沒賦值,所以取到的是空.
且, 你只描述了你的函數的定義,並沒有描述你是怎麼調用的, 在什麼時間點調用的.
每個form中的input id都是一樣的?同樣的id肯定衝突啊?
ID不能有兩個相同的,根據你的描述 你看下是不是出現了兩個相同ID的input
還有就是像上面說的,你不覺得寫兩個功能完全一樣的函數是浪費程式碼麼。
兩個ID相同的元素並沒有什麼影響。題主描述的問題有錯誤的地方 "資料沒有發送出去?" 這是指ajax請求沒有發送資料,根據提問者的貼圖明顯是發送之前就沒有取到資料並不是沒有發送資料。"控制台沒有報錯?" 是前端控制台沒有報錯還是後台沒有報錯。前端還少一個error的回調方法,如果進了error那你這根本就沒辦法回調。