Я пытаюсь отправить форму через ajax и JsHelper из CakePHP 1.3
Я пытаюсь позвонить /eng/feedbacks/submit_feedback
, но вместо этого в консоли я вижу сообщение для http://lang/eng/pa/homepage
,Возвращенный результат - другой экземпляр этой страницы, а не что-либо еще.
Это, кажется, не имеет отношения к тому, существует ли такой submit_feedback
или нет.Я начал это действие с die("test");
, и оно ничего не меняет.
почему, что происходит?
форма находится в моем макете (как я хочу, чтобыбыть в моем нижнем колонтитуле).Выполняется, когда URL-адрес /eng/pa/homepage
Код формы:
echo $this->Form->create('Feedback', array('url'=>array( 'controller'=>'feedbacks', 'action'=>'submit_feedback')));
echo $this->Form->input('Feedback.content', array('label'=>false, 'type'=>'textarea'));
echo $this->Js->submit('Save', array('class'=>'button blue',
'before'=>$this->Js->get('#sending')->effect('fadeIn'),
'success'=>$this->Js->Get('#sending')->effect('fadeOut'),
'update'=>'#success'
));
echo $this->Form->end();?>
<div id="success">xx</div>
В этом #success DIV я получаю связанную полную страницу, а не то, что я определил в действии контроллера
Метод контроллера:
function submit_feedback(){
if(!empty($this->data)){
$this->Feedback->set($this->data);
if($this->Feedback->validates()){
if($this->Feedback->save($this->data)){
// AJAX
if($this->RequestHandler->isAjax()){
$this->render('/feedbacks/success', 'ajax');
}else{
die('not ajax');
}
}
}
}
}
И шаблон успеха:
<p style="background: lightgreen">Purple cow!</p>
Что я делаю не так?
ПРИМЕЧАНИЕ: если я запускаю ту же форму со страницы /eng/feedbacks/submit_feedback
, она работает точно так же, как и через ajax, и моя база данных обновляется, я загружаю необходимый шаблон «success» и все блестит исчастливый.
ОБНОВЛЕНИЕ: ОБРАЗЕЦ КОДА ИСТОЧНИКА ФОРМЫ:
<form accept-charset="utf-8" action="/eng/feedbacks/submit_feedback" method="post" id="FeedbackReadForm">
<div style="display: none;">
<input type="hidden" value="POST" name="_method">
</div>
<input type="hidden" id="FeedbackUserId" value="141" name="data[Feedback][user_id]">
<div class="input radio">
<input type="hidden" value="" id="FeedbackType_" name="data[Feedback][type]">
<input type="radio" value="suggestion" id="FeedbackTypeSuggestion" name="data[Feedback][type]">
<label for="FeedbackTypeSuggestion">Suggestion</label>
<input type="radio" value="problem" id="FeedbackTypeProblem" name="data[Feedback][type]">
<label for="FeedbackTypeProblem">Poblem</label>
<input type="radio" value="opinion" id="FeedbackTypeOpinion" name="data[Feedback][type]">
<label for="FeedbackTypeOpinion">Other Opinion</label>
</div>
<div class="input textarea">
<textarea id="FeedbackContent" rows="6" cols="30" name="data[Feedback][content]"></textarea>
</div>
<div style="margin-top: 17px; margin-right: 50px;" class="right">
<a onclick="javascript: closeFeedbackPuller(); return false;" href="#">Cancel</a>
</div>
<div class="submit">
<input type="submit" value="Save" id="submit-396027771" class="button blue">
</div>
</form>
ОБНОВЛЕНИЕ 2: Сгенерировано JS:
$(document).ready(function () {
$("#submit-396027771").bind("click", function (event) {
$.ajax({
beforeSend:function (XMLHttpRequest) {
$("#sending").fadeIn();
},
data:$("#submit-396027771").closest("form").serialize(),
dataType:"html",
success:function (data, textStatus) {
$("#sending").fadeOut();
$("#success").html(data);
},
type:"post",
url:"\/eng\/pa\/homepage"
});
return false;
});
});
Я вижу, что URL-адрес неправильный, даже считая URL-адрес формыбыл прав.Как это можно решить?