错误:JSON.parse:JSON数据后出现意外的非空白字符

时间:2014-02-25 23:32:58

标签: javascript php json parsing mysqli

我遇到了Json的问题,我看到很多用户都遇到过这个问题我看到了这些问题,但我无法理解我的错误在我的代码中的位置!对不起,如果这是重复的!

第一个文件index.html:

这是在文件的head部分:

<script type="text/javascript">
function ajax_json_data(){
    var databox = document.getElementById("databox");
    var field1 = document.getElementById("field1").value;
    var results = document.getElementById("results");
    var x = new XMLHttpRequest();
    x.open( "POST", "test.php", true );
    x.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    x.onreadystatechange = function() { 
        if(x.readyState == 4 && x.status == 200){
            databox.innerHTML = "";
            var d = JSON.parse(x.responseText);
            for(var o in d){
                if(d[o].title){
                    results.innerHTML = "";
                    databox.innerHTML += '<p><a href="page.php?id="'+d[o].id+'">'+d[o].title+'</a><br />';
                    databox.innerHTML += ''+d[o].cd+'</p>';
                }
            }
        }
    }
    x.send("limit=4&field1="+field1);
    results.innerHTML = "requesting...";
}
</script>

这是在文件的正文部分:

<form id="form" method="post" onSubmit="return false;">
<textarea id="field1" name="field1" placeholder="Input some text here..."></textarea>
<input type="submit" id="submit" name="submit" value="Submit" onClick="ajax_json_data();">
</form>
<div id="results"></div>
<div id="databox"></div>
<script type="text/javascript">ajax_json_data();</script>

第二个文件test.php:

<?php header("Content-Type: application/json");
if (isset($_POST['field1']) && $_POST['field1'] != "") {
    $field1 = $_POST['field1'];
    require_once("db_conx.php");
    $sqlString = "INSERT INTO test_ajax (title) VALUES ('$field1')";
    $query = mysqli_query($db_conx, $sqlString) or die (mysqli_error()); 
}
if(isset($_POST['limit'])){
    $limit = preg_replace('#[^0-9]#', '', $_POST['limit']);
    require_once("db_conx.php");
    $i = 0;
    $jsonData = '{';
    $sqlString = "SELECT * FROM test_ajax ORDER BY creationdate DESC LIMIT $limit";
    $query = mysqli_query($db_conx, $sqlString);
    while ($row = mysqli_fetch_array($query)) {
        $i++;
        $id = $row["id"]; 
        $title = $row["title"];
        $cd = $row["creationdate"];
        $cd = strftime("%B %d, %Y", strtotime($cd));
        $jsonData .= '"article'.$i.'":{"id":"'.$id.'","title":"'.$title.'","cd":"'.$cd.'"},';
    }
    $jsonData = chop($jsonData, ",");
    $jsonData .= '}';
    echo $jsonData;
}
?>

mysqli表有一个id,一个标题和一个时间戳,我已经在JSONLint中测试了数据并且它完全有效......也许我给它的一些细节没有必要但是没关系。 .. 因此它返回此错误:SyntaxError:JSON.parse:JSON数据后出现意外的非空白字符... var d = JSON.parse(x.responseText); 任何帮助将不胜感激!提前谢谢!

1 个答案:

答案 0 :(得分:0)

发现问题..问题是我的主机提供商发送了一些代码和我的json响应,所以json的响应无效..!感谢您的反馈!