如何停止 jQuery 帖子页面刷新

Posted

技术标签:

【中文标题】如何停止 jQuery 帖子页面刷新【英文标题】:How to stop jQuery post page refresh 【发布时间】:2013-02-14 19:46:57 【问题描述】:

我正在通过 phpmysql 数据库中获取数据。我正在使用 jQuery 从 PHP 发送和获取数据。这是代码。

$.POST("SubmitCode.php", $("#questionCodeForm").serialize(),'json').done(function(data) );

现在的问题是,一旦我发送了这些数据,页面就会刷新。如何停止页面刷新。如果我删除“json”,则页面停止刷新,但问题是我想在不刷新页面的情况下获取 json 数据。我该怎么做?

-------------------------------------------编辑后-- -------------------------------------------------- ------------------------- 这是更新的代码

$(document).ready(function() 
    initialization();

    codeSubmission();
);

function initialization() 
    $("#answerForm").hide();


function codeSubmission() 
  $("#submitButton").click(function(e) 
    e.preventDefault();
    $.post("SubmitCode.php", $("#questionCodeForm").serialize()).done(function(data) 
        var questionName = data.questionName,
            options = data.options,
            pollingStatus = data.pollingStatus,
            codeExist = data.codeExist;

        alert(data);
        alert(data[1]);
        alert(questionName);
        alert(options);

        if(codeExist == true) 
            $("#questionTitle").text("questionName");

            for(rowNum=1;rowNum<=5;rowNum++) 
                $("#checkbox-"+rowNum).val("Answer1");
                $("#checkbox"+rowNum+"label").text("Answer"+rowNum);
             

            $("#answerForm").slideDown(500);

         else if(codeExist == false) 
            alert("This quiz code is invalid");
           
    ,'json');  
    //return false;
  );
    //return false;

现在的问题是 alert(questionName) 的输出未定义。数据作为字符串传递。如何在正确的变量中获取正确的信息?

【问题讨论】:

那个编辑真的是另一个问题,而不是这个问题的更新。但是 - 您是否发送 JSON 数据(在 PHP 中使用 echo json_encode($yourArray);,没有其他输出)。 是的,这是正确的。我只是通过 json 呼应变量 简单出现的错误是:Uncaught TypeError: Object json has no method 'apply' 该错误通常表明$.post() 例程认为'json' 参数是回调。问题是你在.done() 调用中有'json' 字符串,而不是$.post() 调用。它应该在序列化数据参数之后。 找到了答案。我必须使用 jQuery.parseJSON 在客户端解析 JSON 【参考方案1】:

试试这个:(注意回调函数的位置,以及小写的 .post 方法)

$.post("SubmitCode.php", $("#questionCodeForm").serialize(),function(data) 
  //manipulate your data here

 ,'json');

还要确保触发帖子的内容不是实际链接,如果是,您需要阻止默认操作发生。例如:

<a href="submit.php">Click here to submit</a>

javascript

$(a).click(function(e)  
e.preventDefault();
$.post("SubmitCode.php", $("#questionCodeForm").serialize(),function(data) 
  //manipulate your data here

 ,'json');
);

【讨论】:

我怀疑这后面的部分是关键,使用.done()就可以了。 注意,您可以在 jQuery 事件函数上执行 return false; 使用链接提交表单很脏 我已经更新了这个问题。 @Orbling,使用 .done() 会解决上面的数据问题吗? 如果您需要查看处理数据的 php 文件,请告诉我。【参考方案2】:

您还必须在客户端解析 json。您可以使用

obj = jQuery.parseJSON(数据);

【讨论】:

以上是关于如何停止 jQuery 帖子页面刷新的主要内容,如果未能解决你的问题,请参考以下文章

键盘输入时,如何在Ajax调用URL更改后停止MVC页面刷新

jquery怎么实现页面的自动刷新

喜欢/不喜欢帖子而不刷新页面

ajax调用后如何停止刷新页面?

如何停止刷新页面?

关闭模态后刷新父页面