2

我有一个要通过 jQuery ajax 提交的表单。它适用于除 iPad/iPhone 之外的所有浏览器。我似乎无法弄清楚为什么它不起作用。iPad 完全忽略了来自 ajax 的调用,只是“提交”了表单。

这是该特定部分的java(它已放置在准备好的文档中):

$(".add_to_cart").bind('submit', function(e) {

var productID = $(this).attr('id');
var quantity = $(this).find("#quantity").val();


$.ajax({
    type: 'post',
    url: '/add/',
    data: 'quantity='+quantity+'&product_id='+productID,
    success: function(callback) {
            window.location = '/cart/';
    }

});

e.preventDefault();
});

这是html

<form id="481" class="add_to_cart" method="post">
<input type="hidden" name="product_id" value="481">
<select name="quantity" id="quantity"><option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option><option value="5">5</option><option value="6">6</option><option value="7">7</option><option value="8">8</option><option value="9">9</option></select>
<input type="submit" value="Add to cart" />
</form>

我已经尝试过 live、bind 和 submit()。在这个示例中,我已经绑定了,但这也不适用于 iPad 或任何其他 iOS 设备。

4

1 回答 1

0

它实际上可能正在“工作”但出现错误。

事实上,即使是函数中某处的语法错误也会阻止阻止默认值的工作。这就是为什么您总是将 thee.preventDefault();视为函数的第一行。这是我建议你先做的。

此外,ajax 调用也可能会出错,请使用错误处理程序来确定:

 error: function (request, status, error) {
    alert(request.responseText);
 }
于 2013-02-04T17:57:07.660 回答