微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Ajax到PHP在同一页面上

我正在尝试将变量发送到进行AJAX调用的同一页面.

只有当我分离PHP脚本(例如process.PHP并相应地更改AJAX URL)时,我才会收到成功的结果.

index.PHP

<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script>
    $(function() { 
        $('form').submit(function(e) { 
            e.preventDefault();
            $.ajax({
                type        : 'POST',
                url         : 'index.PHP',
                data        : $(this).serialize(),
                dataType    : 'json',
                encode      : true
            })
            .done(function(data) {
                $('#result').html(data);    
            })
        });
    }); 
</script>
</head>

<body>
<?PHP
    $data = array();
    if(isset($_POST['name'])) {
        $data = 'You entered: ' . $_POST['name'];       
        echo json_encode($data);        
    }
?>
    <form>
        <input type="text" name="name">
        <input type="submit" value="Submit">
    </form>

    <div id="result"></div>
</body>

是否可以使用同一页面捕获和处理我们使用AJAX传递的变量?

解决方法:

你在AJAX设置中设置dataType:json,这样就应该回显一个json object而不是一个字符串(HTML).使用exit()而不是echo,并将你的PHP放在页面的最顶层.因此,在检查$_POST [‘name’]是否存在之前,不会回显任何HTML.

另一件事是你的$data = array()转换为该行的字符串:

$data = 'You entered:' . $_POST['name'];

它应该是$data [] = …

<?PHP
    $data = array();
    if(isset($_POST['name'])) {
        $data[] = 'You entered:' . $_POST['name'];
        exit(json_encode($data));       
    }
?>

<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script>
    $(function() { 
        $('form').submit(function(e) { 
            e.preventDefault();
            $.ajax({
                type        : 'POST',
                url         : 'index.PHP',
                data        : $(this).serialize(),
                dataType    : 'json',
                encode      : true
            })
            .done(function(data) {
                $('#result').html(data);    
            })
        });
    }); 
</script>
</head>

<body>
    <form>
        <input type="text" name="name">
        <input type="submit" value="Submit">
    </form>
    <div id="result"></div>
</body>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐