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;
}