为什么我的AJAX响应包含HTML源?

时间:2014-02-27 04:48:27

标签: javascript php jquery ajax json

希望你们都做得很好。这是交易。我对PHP进行了AJAX调用,PHP对JSON字符串进行了解码,然后从json对象回显了一个属性,但在AJAX响应警报中,我从json属性和当前页面的源中获取了正确的值,例如:

jsonProperty<!DOCTYPE HTML>
<html>
<head>... [the rest of the page's source]

这是我的代码: PHP

<?php
private function validate_review(){
    $json = json_decode($_POST['data']);
    echo $json->review;
}
?>

AJAX:

    <script>
    var reviewData = {
        title : $('#fieldtitle').val(),
        raiting : starRaiting,
        review : $('#fieldreview').val()
    }

    $.ajax({
        type: 'post',
        url: 'http://localhost/codeigniter/new-review',
        data: {data: JSON.stringify(reviewData)},
        success: function(result){
            alert(result);
        }
    });
</script>

为什么响应还包含页面的来源,这完全是反直觉和奇怪的。帮助

2 个答案:

答案 0 :(得分:1)

请求:

指定您的请求dataType

$.ajax({
        type: 'post',
        url: 'http://localhost/codeigniter/new-review',
        data: {data: JSON.stringify(reviewData)},
        dataType: 'jsonp', //tell the server that you expect json 
        success: function(result){
            alert(result);
        }
    });

响应:

<?php
//DO NOT echo any output before header
header('Content-Type: application/json'); //said this response content is json
?>

而不是echo json内容

答案 1 :(得分:0)

我认为您的代码仍然包含模板。

private function validate_review(){
    $json = json_decode($_POST['data']);
    die($json->review);
}

这应该有用。