在尝试了三天之后,我现在把它发布在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/index(。提交时,会显示一个用于用户数据输入的 jqueryui 对话框,它会提醒"成功",因此正在触发该功能。
我使用 chrome 开发人员工具来检查它从未尝试调用 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 操作,我已经尝试将链接设置为绝对链接,所以这不是问题。
url
字段必须为小写