1

こんにちは、ZendFrameworkでのjQueryajax投稿リクエストについて質問があります。これが私のjqueryです。

$("input[type=image].addToCartButton").click(function() {
    var productId = $(this).attr("id");

    $.ajax({
        type: 'POST',
        dataType: 'html',
        url: "http://localhost/ZendProjects/essence/essenceZP/public/order",
        data: {
            id: productId
        },
        success: function(data){
            alert(data);
        }
    });

});

ZendFrameworkOrderControllerのコードは次のとおりです。

    $request = $this->getRequest();
    if($request->isXmlHttpRequest()) {
        $this->_helper->layout()->disableLayout();
        $test = 'testing ajax content';
        $this->view->test = $test;
    } else {
        $test = 'testing non-ajax content';
        $this->view->test = $test;
    }

Firebugコンソールでエラーが発生しますが、0.5秒間表示されて非表示になるため、エラーがどこにあるかわかりません。何かアイデアはありますか?アイデアは、ボタンをクリックしてproductIdを注文コントローラーに送信し、それをセッション配列に配置することですが、現時点ではajaxリクエストのみをテストします。

マークアップ:

    <form action="" method="post">
        <label for=".productQuantity" style="float: left;margin-top:7px;margin-left: 5px">Количество</label>
        <input class="productQuantity" name="productQuantity" type="number" value="1" min="1" max="1000" style="width: 50px;float: left;margin-left: 7px" />
        <input type="image" id="<?php echo $product->id; ?>" name="<?php echo $this->url(array('controller' => 'order', 'action' => 'add-to-cart'), 'default', true) ?>" src="<?php echo $this->baseUrl('images/cartPut.png'); ?>" style="margin-left: 13px;" />
    </form>
4

1 に答える 1

1

何が起こっているのかというと、送信ボタンをクリックすると、フォームが送信されると同時にajax呼び出しがトリガーされます。

がないのに、なぜフォームが送信されるのか疑問に思われるかもしれませんaction=""

つまり、action属性が空白の場合、同じページにあると見なされます。つまり、あなたが=localhost/index.phpよりも上にいる場合action=""action="localhost/index.php"

したがって、を追加してフォーム送信を無効にする必要があります action="javascript:void(0)"

これにはjQueryを使用することもできます。

jqueryで送信をキャンセルしますか?

または、プレーンなJavaScript(送信イベントにfalseを返す)

于 2012-09-03T19:13:52.193 に答える