javascript - 一個頁面中有多個相同的form,分別去發起非同步請求,後寫的$.ajax方法,資料發送不出去,控制台也沒有報錯?

來源:互聯網
上載者:User

如題:
一個頁面中有多個相同的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那你這根本就沒辦法回調。
  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.