阻止jQuery将整个页面返回到我的div中

时间:2015-08-08 22:25:44

标签: javascript php jquery html ajax

所以我有一个表单,其中包含' 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),

等等。

1 个答案:

答案 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');
                   }

            });

});

我相信现在它会起作用。如果没有,请告诉我。