我觉得这是我现在应该学到的东西,而且我确信这是我失踪的小东西,但我可以使用澄清来确保我的方法是正确的。
我正在使用AJAX将数据发布到self
,这是一个包含php和html的文件。我可以写php很好,但在成功的ajax帖子之后,我怎么只返回通过php处理的数据而不是剩下的html?发布到单独的脚本是否更好?
答案 0 :(得分:7)
如果你有PHP在文件开头处理POST请求,你可以这样做:
<?php
if (isset($_POST['somevar'])) {
/* do something */
exit(0);
}
?>
exit()
将停止在该行加载页面。
我认为,最好使用单独的脚本来处理动态AJAX请求。
答案 1 :(得分:3)
您可以刮取生成的文档的更改部分并将其插入原始页面。通过这种方式,您还可以让您的页面在禁用JavaScript的用户身上工作,而不会执行任何特殊操作。
示例:
<html><title>Unobtrusive AJAX Example</title>
<script type="text/javascript"
src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js">
</script><script type="text/javascript">
$("form.ajax[id]").live('submit', function() {
$(this).find("input[type='submit']").attr("disabled", true);
$.ajax({
type: $(this).attr('method') || 'POST',
url: $(this).attr('action') || window.location.pathname,
data: $(this).serialize(),
context: $(this),
success: function(data) {
$(this).html(
$(data).find("#" + $(this).attr("id")).html()
);
}
});
return false;
});
</script>
</head><body>
<div><form method="post" class="ajax" id="main">
<p><?php echo date('H:i:s'); ?></p>
<p><input type="submit"></p>
</form></div>
<!-- keep the div: you got to have at least one div to make it work -->
</body></html>
答案 2 :(得分:2)
它总是取决于您的需求,但如果使用相同的脚本就足够了,那就去做吧。
如果您希望脚本不发送任何内容而不是您对XML HTTP请求的回答,请在发送数据后使用 PHP 中的exit();
,这将使脚本完成在那时候。
答案 3 :(得分:0)
加入剧本:
if($_POST['id']) {
$data = array('return'=>'returnValue');
$data = json_encode($data);
exit($data); }
使用Javascript:
$.ajax({
url: 'frmSelf.php',
data: $("#frmSelf").serialize(),
dataType: 'json',
type : 'post',
success : function(returnData) {
console.log(returnData);
}
});