AJAX在PHP中发布自我

时间:2011-09-03 01:38:07

标签: php ajax

我觉得这是我现在应该学到的东西,而且我确信这是我失踪的小东西,但我可以使用澄清来确保我的方法是正确的。

我正在使用AJAX将数据发布到self,这是一个包含php和html的文件。我可以写php很好,但在成功的ajax帖子之后,我怎么只返回通过php处理的数据而不是剩下的html?发布到单独的脚本是否更好?

4 个答案:

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