Php submitHandler:触发不正确的对话框
我试图调试submitHandler的一个问题:函数。在firebug中,它根据submitHandler中的真实句柄显示正确的错误消息。但是,它触发的是成功对话框,而不是错误对话框。我对jquery和ajax相当陌生,所以我在错误的地方用了一些括号或逗号 如果有人能指出我的错误,我将不胜感激。谢谢Php submitHandler:触发不正确的对话框,php,jquery,ajax,Php,Jquery,Ajax,我试图调试submitHandler的一个问题:函数。在firebug中,它根据submitHandler中的真实句柄显示正确的错误消息。但是,它触发的是成功对话框,而不是错误对话框。我对jquery和ajax相当陌生,所以我在错误的地方用了一些括号或逗号 如果有人能指出我的错误,我将不胜感激。谢谢 submitHandler: function() { if ($("#USRboxint").valid() === true) {
submitHandler: function() {
if ($("#USRboxint").valid() === true) {
var data = $("#USRboxint").serialize() + '&submit=true';
$.post('/domain/users/box.php', data, function(msgs) {
if (msgs.boxerror === true) {
var $dialog = $('<div id="dialog"></div>').html('<br /><b>Your New entry was NOT SUBMITTED.<br /><br />Thank you.</b>');
$dialog.dialog({
autoOpen: true,
modal: true,
title: 'New entry Unsuccessfull',
width: 400,
height: 200,
draggable: false,
resizable: false,
buttons: {
Close: function() {
$( this ).dialog( "close" );
}
}
});
}
else
var messageOutputs = '';
for (var i = 0; i<msgs.length; i++){
messageOutputs += msgs[i].box+' ';
}
$("#USRboxint").get(0).reset();
var $dialog = $('<div id="dialog"></div>').html('<br /><b>Your New entry was successfully submitted.<br /><br />Thank you.</b>');
$dialog.dialog({
autoOpen: true,
modal: true,
title: 'New entry successfull',
width: 400,
height: 200,
draggable: false,
resizable: false,
buttons: {
Close: function() {
$( this ).dialog( "close" );
}
}
});
//$("#frmreport").get(0).reset();
}, 'json');
}
},
success: function(msgs) {
}
submitHandler:function(){
如果($(“#USRboxint”).valid()==true){
var data=$(“#USRboxint”).serialize()+'&submit=true';
$.post('/domain/users/box.php',数据,函数(msgs){
如果(msgs.boxerror===true){
var$dialog=$('').html('
您的新条目未提交。
谢谢。');
$dialog.dialog({
自动打开:对,
莫代尔:是的,
标题:“新条目未成功”,
宽度:400,
身高:200,
可拖动:错误,
可调整大小:false,
按钮:{
关闭:函数(){
$(此).dialog(“关闭”);
}
}
});
}
其他的
var messageOutputs='';
对于(var i=0;i
每次创建对话框效率不高,最好在文档准备就绪时初始化对话框:
$(function(){
$('<div id="dialog_error"></div>').html('<br /><b>Your New entry was NOT SUBMITTED.<br /><br />Thank you.</b>').dialog({
autoOpen: false,
modal: true,
title: 'New entry Unsuccessfull',
width: 400,
height: 200,
draggable: false,
resizable: false,
buttons: {
Close: function () {
$(this).dialog("close");
}
}
});
$('<div id="dialog_success"></div>').html('<br /><b>Your New entry was successfully submitted.<br /><br />Thank you.</b>').dialog({
autoOpen: false,
modal: true,
title: 'New entry successfull',
width: 400,
height: 200,
draggable: false,
resizable: false,
buttons: {
Close: function () {
$(this).dialog("close");
}
}
});
});
$(函数(){
$(“”).html(“
您的新条目未提交。
谢谢。”)。对话框({
自动打开:错误,
莫代尔:是的,
标题:“新条目未成功”,
宽度:400,
身高:200,
可拖动:错误,
可调整大小:false,
按钮:{
关闭:函数(){
$(此).dialog(“关闭”);
}
}
});
$('').html('
您的新条目已成功提交。
谢谢。')。对话框({
自动打开:错误,
莫代尔:是的,
标题:“新条目成功”,
宽度:400,
身高:200,
可拖动:错误,
可调整大小:false,
按钮:{
关闭:函数(){
$(此).dialog(“关闭”);
}
}
});
});
然后在需要时打开它们:
submitHandler: function () {
if ($("#USRboxint").valid() === true) {
var data = $("#USRboxint").serialize() + '&submit=true';
$.post('/domain/users/box.php', data, function (msgs) {
if (msgs.boxerror === true) {
$("#dialog_error").dialog("open");//Open error dialog
} else var messageOutputs = '';
for (var i = 0; i < msgs.length; i++) {
messageOutputs += msgs[i].box + ' ';
}
$("#USRboxint").get(0).reset();
$("#dialog_success").dialog("open");//Open success dialog
//$("#frmreport").get(0).reset();
}, 'json');
}
}
submitHandler:函数(){
if($(“#USRboxint”).valid()==true){
var data=$(“#USRboxint”).serialize()+'&submit=true';
$.post('/domain/users/box.php',数据,函数(msgs){
如果(msgs.boxerror===true){
$(“#dialog_error”).dialog(“open”);//打开错误对话框
}else var messageOutputs='';
对于(变量i=0;i
您应该在else语句的代码周围添加大括号,否则只有第一行是else块的一部分,并且不管执行什么,它之后的所有行都将被执行
更改此项:
else
var messageOutputs = '';
为此:
else {
var messageOutputs = '';
// Other lines that belong in the else block.
}
我不同意Wilmer的观点,但您应该在对话框关闭时正确清理它。因为您创建div只是为了显示一次对话框,所以应该在对话框关闭时删除它。您可以通过添加以下对话框选项来执行此操作:
close: function() { $(this).dialog('destroy').remove(); },
我认为问题与(msgs)有关。我得到的typeError msgs为空。我认为我需要在第一个块和第二个块中使用“json”,但不确定如何编码。有什么想法吗?谢谢
close: function() { $(this).dialog('destroy').remove(); },