2010-10-30 180 views
0

我正在開發一個項目,我必須向其他人負責的某個基於java的中間件發送ajax請求。 4件事情可以響應我回來後的數據發生......處理對Ajax請求的響應

  1. 的用戶ID是正確的,所以我收到響應包括:

    XMLHttpRequest.responseText =「someurl.html」
    的XMLHttpRequest。狀態= 200

  2. 的用戶ID是正確的,但人不匹配一定的地位:

    XMLHttpRequest.responseText = 「wrongstatusurl.html」
    個XMLHttpRequest.status = 200

  3. 的用戶ID是正確的,但驗證碼是錯誤的,所以我接收所述響應包括:

    XMLHttpRequest.responseText =「錯誤。 。驗證碼錯誤 「
    XMLHttpRequest.status = 200

  4. 的用戶ID是不正確的:

    XMLHttpRequest.responseText =」 錯誤。沒有用戶。」
    XMLHttpRequest.status = 200

所以你可以看到每個響應是200 OK,這意味着每一個Ajax請求打我的‘成功’回調(我使用jQuery,該位並且它有一個內置的success回調函數作爲它的ajax方法的一部分),所以我需要將回調處理基於我接收到的實際文本回來,正確?

無論是我還是需要讓中間件人員發回與請求的實際狀態更好匹配的狀態代碼...聽起來是否正確?


我的問題:

是什麼在這裏,最好的方法?只需處理返回的純文本(關於如何最好地做到這一點的建議將是最值得讚賞的......只是解析文本?似乎有點不靈活......如果文本在某一天改變會怎麼樣?)或得到其他某種迴應(建議告訴他我最需要讚賞......只是說,我需要某種指定狀態代碼的頭......也許......)。你將如何處理?

回答

2

我認爲最好的辦法是解析responseText並希望它們永遠不會被改變。

如果您負責實際返回的頁面/數據,您將擁有更大的靈活性。我通常寫的那種方式(你無法控制的結局)總是返回某種XML/JSON。這種方式如果狀態是200,你會得到一些數據(不管處理中的錯誤,找不到頁面或某些東西)。在這些數據中,我通常會爲任何錯誤消息拋出一個標記(true或false)和一個標記以及數據。如果沒有錯誤,我會在之後返回其餘的數據。

然後,我會使用responseXML並遍歷節點,檢查我的狀態/錯誤節點並提醒用戶出現錯誤(只需顯示錯誤節點文本即可)。如果成功了,我會繼續處理剩餘的節點,這取決於我需要它們的方式。現在使用JSON和jQuery支持ajax方法會更容易一些。

+0

感謝您的回覆。現在,我要求他們將響應更改爲至少返回一個數字:1,2,3,4,以便我可以基於此進行分支。我認爲這會比試圖解析文本更有前途。不知道他們是否會批准我的請求,但似乎更容易做到這一點對我來說。 – Lothar 2010-10-30 05:02:30

+0

哦,我認爲解析文本是絕對可怕的。但是,考慮到你所擁有的東西,它看起來像是你唯一的選擇。那是除非他們希望同意爲你做一些改變。返回數字的問題在於,知道這些數字意味着什麼,並且如果它們改變了含義並且沒有像原始的responseText改變那樣通知它,這仍然取決於您。 – pinkfloydx33 2010-10-30 05:10:44