これを3日間機能させようとした後、これをstackoverflowに投稿しています。
Cakephp アプリケーションには、メッセージ用のコントローラーとリンク用のコントローラーがあります。$.ajax() がメッセージコントローラー内から正しいアクションを呼び出す理由がわかりませんが、ajax 呼び出しで指定されたアクションに移動しようとさえしていないようです。
これは機能し、実際にメッセージコントローラーで追加アクションを呼び出します:
$('#add_message').click( function () {
$.ajax({
url: "/messages/add",
type: "POST",
dataType: "html",
data: {
text: $('#message_text').val(),
group_id: $('#group_id').val()
},
success: function(data, textStatus, jqXHR) {
$('#message_list').prepend(
$(jqXHR.responseText).hide().fadeIn('slow')
);
$('#message_text').val("");
}
});
以下のコードは、ajax 呼び出し (リンク コントローラーの追加アクションに対応する '/links/add') で指定された正しい URL に移動することさえせず、代わりに現在のビューをレンダリングする URL (この場合は /messages/) を使用します。索引)。jqueryui ダイアログがユーザー データ入力用に表示され、サブミットされると「成功」というアラートが表示されるため、関数がトリガーされます。
クロム開発者ツールを使用して、URL /links/add を呼び出そうとしないヘッダーを調べました。
$( "#dialog-add_group_link" ).dialog({
autoOpen: false,
height: 300,
width: 350,
modal: true,
buttons: {
"Add Link": function() {
$.ajax({
type: "POST",
Url: "/links/add/",
data: {
tags: $('#link_tags').val(),
text: $('#text').val(),
href: $('#href').val(),
group_id: $('#group_id').val()
},
success: function() {
alert('success');
}
});
$( this ).dialog('close');
},
Cancel: function() {
$( this ).dialog( "close" );
}
},
close: function() {
}
});
別の URL を使用するように指示していて、見逃しているものはありますか? これが /links/add アクションを呼び出さない理由がわかりません。リンクを絶対リンクにしてみましたが、それは問題ではありません。