通过AJAX检索PHP JSON数据 - 正确的数据请求结构

时间:2015-05-20 14:32:10

标签: javascript php jquery ajax json

我有一个名为terminal_tester.php的PHP文件,它运行许多终端操作,并在最后使用

创建json数据
echo json_encode($jsonData);

数据看起来像这样

{"source":"Betting Tips","published":"2015-05-20 15:20:22;","status":true,"eventIDs":["27448131","27448900"],"TipsTB":"TIP 1 MLADENOVIC TO BEAT RISKE\",\"TIP 2 DOLGOPOLOV TO BEAT GULBIS\"]","TipsTW":"[]"}

我现在想用这些数据填充我的HTML文件,但是我无法理解Ajax数据输入的正确格式。我在我的html文件的脚本区域中尝试以下内容

function callbackData(){
    return $.ajax({
        dataType: 'JSON',
        url: 'terminal_tester.php',
        type: 'GET',
        cache: false,
        data: jsonData
    });
};

callbackData().success(function (data) {
    document.getElementById("phpReturn2").innerHTML = jsonData
    document.getElementById("phpReturn3").innerHTML = eventIds
    document.getElementById("phpReturn4").innerHTML = published
});

但我没有得到任何回复。我已经搜索过了,我认为问题出在数据:ajax请求的区域,但我也对PHP文件中需要GET命令感到困惑。有人可以解释如何正确构建ajax请求吗?

修改

terminal_tester.php有很多函数在最后聚集在一起构建json数据,php文件的最后部分看起来像这样

      $jsonData = createJson($eventIds, $TipsTB, $TipsTW, $status);
      echo json_encode($jsonData);
      $fp = fopen('results.json', 'w');
      fwrite($fp, json_encode($jsonData));
      fclose($fp);

2 个答案:

答案 0 :(得分:2)

首先,我认为您的json数据不正确。它应该是这样的 -

{"source":"Betting Tips","published":"2015-05-20 15:20:22","status":true,"eventIDs":["27448131","27448900"],"TipsTB":["TIP 1 MLADENOVIC TO BEAT RISKE","TIP 2 DOLGOPOLOV TO BEAT GULBIS"],"TipsTW":"[]"}

其次,正常的jquery ajax语法是 -

$.ajax({
    dataType: 'JSON',  //This means data which come back from terminal_tester.php should be in json format.
    url: 'terminal_tester.php',
    type: 'GET',  // If you are using get request then you should get data by $_GET[]
    cache: false,
    data: {"jsonData":jsonData}, // Edited this from your code.
    success:function(data){ //This data is coming from terminal_tester.php
        alert(data.result);
    }
});

在terminal_tester.php中,它应该是这样的 -

if(isset($_GET['jsonData'])){
    $jsonData = $_GET['jsonData']; // GET array (Edited)
    // your operation with $jsonData

    // In the end, below json will be get in success data.
    echo json_encode(array('result'=>true));

}

希望这可以帮助你!!

答案 1 :(得分:0)

$ .ajax()。success()有一个数据参数,用于访问从GET请求发回的数据。 eventIds和published都是数据的属性。

callBackData().success(function (data) {

    document.getElementById("phpReturn2").innerHTML = jsonData;
    document.getElementById("phpReturn3").innerHTML = data.eventIds;
    document.getElementById("phpReturn4").innerHTML = data.published;
});