Phalcon Ajax Response возвращает HTML

Поэтому я пытаюсь реализовать это: https://github.com/phalcon/cphalcon/wiki/Dependent-Select-Dropdown

И у меня все работает, он создает выборки, заполняет первый выбор и, когда я выбираю значение, он правильно возвращает значения, как показано ниже, когда я вызываю grabStatesAction в контроллере:

[{ "ID":"2","название": "Раздел1"},{"идентификатор":"24","название": "Раздел 2"}"}]

Однако, если я предупреждаю ответ внутри javascript, он вообще не возвращает его, а вместо этого возвращает кучу HTML со страницы.

Вот мой сценарий

<script type="text/javascript">
    $("#id_product").change(function() {
            var value = $(this).val();

            $.ajax({
                type: "POST",
                contentType: "application/json",
                url: '/admin/section/grabSection/',
                data: {"id": value},
                success: function(response){
                    $("#selectSection option")
                        .not(":first").remove();

                    alert(response);
                    parsed = $.parseJSON(response);


                    $.each(parsed, function(key, value) {
                        $("#selectSection")
                            .append($("<option></option>")
                            .attr("value",value.id)
                            .text(value.name));
                    });
                }
            });
        });
</script>

А вот и контроллер

public function grabSectionAction()
    {
        $id=2; //hardcoded for testing purposes
        $data = Sections::find(array(
            'columns' => array('id_section, section'),
            'conditions' => 'active = 1 AND id_section = :id:',
            'bind' => array('id'=>$id)
        ));
        $resData = array();
        foreach ($data as $result) {
            $resData[] = array("id"=>$result->id_section, "name"=>$result->section);
        }

        echo json_encode($resData);
    }

Страница с выбором - модальное окно с формой. Я думал, может быть, страница должна иметь тип приложения, установленный как json, и, возможно, это была проблема, но если я сделаю это, то форма сломается. Я установил тип приложения в javascript для json. Любые идеи, что я делаю не так или есть какая-то конкретная дополнительная информация, вам нужно просто дайте мне знать

1 ответ

Решение

Попробуйте ниже.. Используйте Console.log вместо предупреждения, чтобы увидеть полную строку ответа. Дополнительная информация: https://developer.chrome.com/devtools/docs/console-api

public function grabSectionAction()
{
    $this->view->disable();

    //Create a response instance
    $response = new \Phalcon\Http\Response();

    $id = 2; //hardcoded for testing purposes
    $data = Sections::find(array(
        'columns' => array('id_section, section'),
        'conditions' => 'active = 1 AND id_section = :id:',
        'bind' => array('id' => $id)
    ));
    $resData = array();
    foreach ($data as $result) {
        $resData[] = array("id" => $result->id_section, "name" => $result->section);
    }

    //Set the content of the response
    $response->setContent(json_encode($resData));

    //Return the response
    return $response;
}
Другие вопросы по тегам