我使用函数通过Ajax发布结果。当我测试以查看函数是否被调用时,我添加一个警报。一切正常,但一旦我删除警报,我的结果就不会发布......导致它的原因是什么?
function SendInvitesF(invType, invWho, projID) {
$.ajax({
url: "ajax.php",
type: POST",
data: "op=sendInvites&inviteMsgType="+invType+"&invitees="+invWho+"&proj="+projID
});
alert("test "+projID) // test alert <<<
}
$("#btnSend").click(function() {
if($("#customMsg").attr("checked")) {
var invType = "custom";
} else {
var invType = "default";
}
var invWho = $(".radioB:checked").val();
var projID = $("#testID").val();
SendInvitesF(invType, invWho, projID);
});
答案 0 :(得分:2)
我怀疑您在onclick或onsubmit事件中调用此函数,并且您没有通过返回false取消默认操作。此外,您没有正确编码任何参数的url。为此,请使用数据哈希:
function SendInvitesF(invType, invWho, projID) {
$.ajax({
url: 'ajax.php',
type: 'POST',
data: {
op: 'sendInvites',
inviteMsgType: invType,
invitees: invWho,
proj: projID
});
return false;
}
然后如果你在锚点的onclick中调用它:
// I guess btnSend is a submit button or an anchor so make sure
// you cancel the default action by returning false from the click
// callback
$('#btnSend').click(function() {
if ($('#customMsg').attr('checked')) {
var invType = 'custom';
} else {
var invType = 'default';
}
var invWho = $('.radioB:checked').val();
var projID = $('#testID').val();
return SendInvitesF(invType, invWho, projID);
});
注意我们如何返回false,从而取消默认操作,这将是一个重定向,当然不会留下时间让AJAX请求执行。当您在函数末尾发出警报时,这将停止任何脚本执行,并且AJAX调用有时间命中服务器。
答案 1 :(得分:0)
您是否尝试在成功处理程序上添加警报?确保ajax调用实际成功通过?也像Darin一样,你可能在onClick上使用过,忘了取消默认操作。