繁体   English   中英

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

[英]Stop jQuery from returning entire page into my div

因此,我有一个具有“ create_topic_parse.php”操作的表单,它将输入值从“ create_topic.php”发送到该输入值,然后将它们插入数据库中。 我可以使用以下代码将所有错误从“ create_topic_parse.php”文件发送到“ create_topic.php”页面中的“ message” 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。” &page = 1' 如果我不包括上面的jQuery,那么效果很好。

问题:如果包括jQuery脚本,它将整个'view_topic.php / etcetc'页面返回到''中,这很糟糕。

所以问题是,有人知道如何防止将整个页面发布到此div中,并且在正确提交表单后实际上将用户重定向到“ view_topic.php”页面吗?

注意:我已经尝试过window.location,但是随后我遇到了来自PHP文件中被输入到“ view_topic.php / etcetc” URL中的连续变量的问题。 我正在尝试使其与header('location:...')一起使用 ,就像不包含jQuery文件时所做的那样。

提前致谢,

任贤齐

解:

jQuery + Ajax转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),

等等等

试试这个。 当正确提交表单后,它仅发送诸如“ correct”之类的字符串,并且在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;

现在在create_topic.php页面上进行jquery

$("#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');
                   }

            });

});

我确定现在可以了。 如果没有,请告诉我。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM