ZendFramework Ajax jQuery post

Здравствуйте, у меня есть вопрос по поводу jQuery ajax post request в ZendFramework, вот мой 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);
        }
    });

});

и вот мой код в контроллере заказов ZendFramework:

    $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>

1 ответ

Решение

Происходит следующее: когда вы нажимаете кнопку "Отправить", ajax-вызов запускается одновременно с отправкой формы.

Вы можете задаться вопросом, почему форма отправляется, если нет action="",

Дело в том, что когда атрибут action пуст, он предполагает, что он находится на той же странице. Я имею в виду, если вы на localhost/index.php чем action="" знак равно action="localhost/index.php"

Таким образом, вы должны отключить отправку формы, добавив action="javascript:void(0)",

Вы также можете использовать jQuery для этого:

отменить отправку в JQuery?

Или даже простой javascript (вернуть false для события submit)

Другие вопросы по тегам