我試圖提交一個嵌入在AJAX請求的HTML響應中的表單,但似乎無法讓表單實際提交。從ajax提交表單返回html
我有類似:
// get the cart page
jQuery.ajax({
type: "GET",
url: "cart.asp"
}).success(function(cartHTML) {
// build dom tree, and make it parsable
var parser = new DOMParser();
var doc = parser.parseFromString(cartHTML, "text/html");
// set sku qty to zero and resubmit form which recalculates totals
doc.getElementById('someProduct').value = 0;
// this does not work, yet returns no error
// the form does indeed exist in `doc`
doc.forms['recalculate'].submit();
// now get the checkout page again
jQuery.ajax({
type: "GET",
url: "checkout.asp"
}).success(function(checkoutHTML) {
// fetches and replaces totals with updated values, etc.
updateCheckoutPageTotals(checkoutHTML); // this works, used in other places
});
});
上述腳本運行沒有錯誤,但是從第二Ajax請求返回的值不從之前改變。預期的結果是從購物車中刪除特定產品,因此返回更新的總計,而不使用此產品。
我已驗證返回的cartHTML
變量是否確實包含購物車的HTML頁面,並且doc.getElementById('someProduct').value = 0;
確實將該輸入元素的表單值設置爲零。
我也在Chrome開發工具中複製了上述腳本,將ajax響應數據分配給全局變量並將其解析到文檔樹中,並嘗試以這種方式提交表單,但都沒有成功。只需在控制檯上執行doc.forms['recalculate'];
即可返回正確的格式,其值someProduct
正確設置爲零。
在沒有ajax的情況下直接在cart.asp
頁面上執行上述操作,然後通過javascript提交表單確實有效 - 我想我可以通過結賬頁面上的ajax來模擬,以使客戶更容易,但是提交就像我上面所做的那樣,看起來沒有任何效果。
我做錯了什麼?
我不能提交表格本身,它必須通過ajax完成。重定向頁面在這裏不起作用。試圖方便地允許客戶在結帳頁面上從購物車中移除特定產品,而不刷新/重定向他們。 – SnakeDoc
那麼,那裏沒有必要調用'submit',因爲只提交表單? – adeneo
看起來像我最好的課程,然後是要弄清楚如何構建帖子,然後用ajax直接提交給表單的action屬性。希望有一個更簡單的方法......它不是一個我可以用服務器端的東西修補的平臺。 – SnakeDoc