2012-07-30 36 views
0

所以我有一個通過Ajax POST請求提交的表單。單擊發送按鈕後,表單將被刪除,並將處理圖形放在其位置。表單數據發送到我的PHP腳本,驗證,並且如果一切都檢出,則返回一個感謝信息以替換處理圖形。但是如果存在驗證錯誤,我會將整個表單的副本回顯到原始表單顯示錯誤出現在表單中的div處。這一切都工作正常,除非表單的副本回顯,JS的表單不起作用?發送按鈕的JS或輸入上的焦點/模糊功能都不起作用。感謝您的任何幫助。JS不工作在回顯PHP

+0

一些代碼將是有益的 – 2012-07-30 08:15:26

+2

JS行動可能需要重新綁定 – 2012-07-30 08:16:21

+1

不要刪除形式,只是將其隱藏,直到你會獲得AJAX響應。如果沒有錯誤 - 只有刪除表格(如果它確實需要的話) – 2012-07-30 08:18:26

回答

2

當您從DOM中刪除表單時,事件也會被取消。你可以有一個函數來設置這些事件,並在響應中有錯誤時調用它。

+0

謝謝你的回答。我實際上已經有了和你一樣的想法並嘗試過了,但第一次沒有奏效。在閱讀完您的問題後,我意識到在將更改保存到我的代碼後,我可能沒有刷新瀏覽器。我再次嘗試了這個想法,刷新了瀏覽器,現在它工作得很好......感謝提醒我。 – 2012-07-30 08:28:22

2

您是否嘗試隱藏表單並顯示處理圖形而不是刪除表單?當你有錯誤時,隱藏圖形並再次顯示錶單。
使用此解決方案,錯誤處理將會更加困難,但您的項目中的兩個位置不會有您的表單!

+0

不,我沒有試圖隱藏它。好主意,但。我沒有考慮這樣做。 – 2012-07-30 08:30:27

-2
$.ajax({ 
    url: 'mypage.html', 
    success: function(){ 
    alert('success'); 
    **<ADD YOUR CUSTOM CODE AFTER AJAX SUCCESS - JS CODE>** 
    }, 
    error: function(){ 
    alert('failure'); 
    } 
}); 
-2

你也可以參考。 http://docs.jquery.com/Ajax_Events

$.ajax({ 
    beforeSend: function(){ 
    // Handle the beforeSend event 
    }, 
    complete: function(){ 
    // Handle the complete event 
    } 
    // ...... 
}); 
0

當您插入HTML混合的Javascript到一些節點,例如一個div,它是不一樣的服務也首次作爲整個文檔的一部分。插入爲innerHTML或某個文本節點時,不會將其視爲腳本。

您有幾種選擇:

**轉換的知名度和編碼錯誤響應(以JSON爲例)

創建2個的div,一個控股的形式,其他的處理圖像。

處理時將窗體切換爲無,窗體要遮擋。

當您處理完表單並且出現錯誤時,請以某種方式對其進行編碼(例如JSON)並將其發回,然後讓頁面上的EXISTING腳本解釋響應。

例如,您可以創建一些結構來保存每個formelementname以及與其關聯的錯誤,因此如果在每個可顯示錯誤的formelement旁邊創建一個空跨度,則可以在表單中輕鬆地突出顯示它們。

當答案從服務器到達時,可以再次顯示錶單,並顯示:none PROCESSING div。

**解讀你的回答(用JavaScript)

這是比較困難的,但也更優雅。 我曾經需要這個(從XHR請求返回的Javascript),並且Randy Webb以一種聰明的方式幫助我。

這裏解釋太多了。 閱讀本線程更詳細地介紹,並鏈接到蘭迪的腳本:

http://tinyurl.com/6pakdu