如何停止 jQuery 帖子页面刷新
Posted
技术标签:
【中文标题】如何停止 jQuery 帖子页面刷新【英文标题】:How to stop jQuery post page refresh 【发布时间】:2013-02-14 19:46:57 【问题描述】:我正在通过 php 从 mysql 数据库中获取数据。我正在使用 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>
$(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 帖子页面刷新的主要内容,如果未能解决你的问题,请参考以下文章