我開發了一個頁面,通過AJAX將帶有圖像的表單張貼到WebAPI2控制器。爲什麼JQuery AJAX間歇性地返回錯誤0?
我反覆這樣做;我讓用戶選擇一堆圖像,添加到選擇框,然後用戶可以從另一個位置添加更多的圖像,或者他們可以從列表中刪除項目。 因此,我將它們填寫的表單提交給服務器。我爲每個圖像專門做一次,以便我可以顯示每個圖像上傳的進度。 一旦圖像在服務器上,它就會被我的服務器端代碼移動到一個安全的存儲庫。應用程序池正在使用特定的AD帳戶來完成它的工作。
這對我來說很好,對於其他已經測試過的其他人來說非常適用,但我有一個單獨的測試人員 - 超過8人,他們在IE中遇到間歇性錯誤。他不會在另一個瀏覽器中嘗試它(我們沒有實際的測試人員,只是我們的用戶,而且這個人很固執)
我的服務器端web api代碼,它是同一個項目的一部分,甚至沒有擊中。我記錄下我們立即進入方法。此外,服務器端的應用程序日誌中沒有記錄錯誤。 AJAX返回「錯誤」和「0」。沒有響應文本。我記錄所有AJAX錯誤到服務器地址(提交就好了,順便說一句)
我最初用MVC控制器而不是Web API寫了這個,但是我希望它能解決這個問題。它沒。
「提交」表單的按鈕不是提交按鈕。它是輸入=「按鈕」。我的表單上沒有提交按鈕。該表單沒有要發佈的地址。我鎖定整個表單,因此無法點擊任何按鈕,在項目上傳時不能編輯任何元素。總之,我看不到e.preventDefault();會有幫助。
這實際上並不是跨站點腳本,而且我也找不到任何聯機內容,這表明跨站腳本策略可能會隨機觸發,但看起來好像它是。
有時,他提交了表格和1/3的圖片上傳和其他錯誤。這不是圖像類型,尺寸或其中的任何一種 - 我複製了他上傳的圖像並用它們進行驗證。
我們在服務器端禁用了跨站點腳本,並且在我身上添加了一個JSONP格式化程序,他測試了它沒有錯誤。我們將繼續測試,看看它是否真的解決了這個問題,因爲他之前已經開始工作,然後問題再次出現。
如果真的是導致它的跨站點腳本,爲什麼?請問IIS服務器上有什麼東西可以選擇不同的頂級域名,因爲我沒有在我的ajax請求中指定一個域名?
$.ajax({
url: getBaseURL() + 'API/FileForm',
type: 'POST',
data: dataString,
cache: false,
contentType: false,
processData: false
})
凡getBaseURL()說:
function getBaseURL() {
var baseURL = $("#HiddenCurrentURL").val().trim();
if (baseURL != "/") {
baseURL += "/";
}
return baseURL;
}
隨着HiddenCurrentURL在我_layout作爲:
@Html.Hidden("HiddenCurrentURL", Request.ApplicationPath)
任何幫助,將不勝感激。我不確定現在該做什麼。瀏覽器設置可以這樣做嗎?
編輯:他正在使用IE 11 - 正如我和我的其他測試人員。我也有,還有一些其他人也在Chrome和Firefox中測試過。
編輯2:我們禁用了跨站腳本,問題在繼續。我認爲有意思的是,這個問題似乎只發生在深夜或者清晨,在下班時間工作。我檢查了IIS組,並且他們表示它的運行方式爲「始終開啓」,但...
也許和IE版本有關..你可以提供IE版本嗎? – Hackerman
@Hackerman不知道它是否會告訴我我添加了,但版本是IE 11 - 對於所有的測試人員。 – nebulous