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() も試しました。このサンプルでは bind を使用していますが、これも iPad やその他の iOS デバイスでは機能しません。

4

1 に答える 1

0

実際には「機能している」可能性がありますが、エラーが発生します。

実際、関数のどこかに構文エラーがあったとしても、デフォルトの防止が機能しなくなります。そのため、常にe.preventDefault();関数の最初の行としてが表示されます。これが私があなたが最初にすることを提案することです。

さらに、ajax呼び出しでもエラーが発生する可能性があるため、エラーハンドラーを使用して次のことを確認してください。

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