所以我有一个表单,其中包含' create_topic_parse.php' 的操作,它会将输入值发送到' create_topic.php' ,然后将它们插入到数据库中。我可以将' create_topic_parse.php' 文件中的任何错误发送到'消息'使用以下代码在' create_topic.php' 页面中使用div:
$("#submit").click( function() {
// I've tried e.preventDefault(); here ^ but it's giving the same result.
$.post( $("#topic_form").attr("action"),
$("#topic_form :input").serializeArray(),
function(info) {
$("#message").empty();
$("#message").html(info).css('color','#be4343');
});
$("#topic_form").submit( function() {
return false; // Not working
});
});
当表单被正确输入,并且不会从PHP文件传递错误时,PHP脚本应该将用户重定向到' view_topic.php?cid ="。 $ CID"&安培; TID =" $ new_topic_id"&安培;页= 1' 即可。如果我没有包含上面的jQuery,这可以正常工作。
问题:如果我包含jQuery脚本,它会将整个' view_topic.php / etcetc' 页面返回到'&# 39;,这很糟糕。
所以问题是,有没有人知道如何防止整个页面被发布到这个div中,并且实际上将用户重定向到' view_topic.php'表格正确提交后的页面?
注意:我已经尝试过window.location,但是我的PHP文件中的连续变量问题被输入到' view_topic.php / etcetc'网址。我正在尝试使用标题('位置:...'),就像没有包含jQuery文件时那样。
提前致谢,
里奇
解决方案:
jQuery + Ajax to PHP:
if($('#topic_title').val() == ''){
$('#message').html("You need to give your topic a title.");
}
使用此代码,我能够检查每个数据条目是否存在,当所有数据值都存在时,我在同一个文件中运行AJAX脚本,将每个值传递给变量,如下所示:
var submit = $('#submit').val();
var topic_title = $('#topic_title').val();
$.ajax({
type: "POST",
url: "create_topic_parse.php",
data: {submit:submit, topic_title:topic_title),
等等。
答案 0 :(得分:0)
试试这个。它会工作的 当表单被正确提交然后只发送一些像“正确”的字符串,并在jquery中让你检查输出字符串。如果它是“正确的”,那么将其重定向到通过javascript查看主题。
如果要将用户重定向到从服务器发送的特定页面,则以json格式从服务器发送类似的内容。
在服务器上写代码就像这样。
if ($condition==true) {
$ajax_return = array(
'message' => 'correct',
'url' => 'your_redirect_url'
);
}
else
{
$ajax_return = array(
'message' => 'your user defined error message',
'url' => 'leave it blank'
);
}
$ajax_return = json_encode($ajax_return);
echo $ajax_return;
现在jquery在create_topic.php页面上
$("#topic_form").submit( function(e) {
e.preventDefault();
$.post(
$("#topic_form").attr("action"),
$("#topic_form :input").serializeArray(),
function(info) {
info= JSON.parse(info);
if(info.message="correct"){
window.location=info.url;
}
else{
$("#message").html('');
$("#message").html(info).css('color','#be4343');
}
});
});
我相信现在它会起作用。如果没有,请告诉我。