使用JSON返回的Jquery ajax无法访问JSON中的数据

时间:2018-01-05 13:48:29

标签: javascript php jquery json ajax

所以我有这个jquery代码:

$(function(){
    var url = 'template/traitComTest.php';
    window.onload = function(e) {
        //  $(".formCom").ajaxForm({url: 'template/traitComTest.php', type: 'post'});
        $.ajax({
            type: "POST",
            url: url,
            data:  $( ".formCom").serializeArray(),
            success: function(reponse){
                console.log(reponse);
            }
        });
    }
});

使用这个PHP代码:

if (isset($_REQUEST)) {
    $adresse = $_POST['adresse'];
    $com = $_POST['commentaire'];
    $sql = $bdd->prepare('UPDATE tempSelector_template SET commentaire= :com WHERE exemple = :exem ');
    $sql->execute(array(
        ":com" => $com,
        ":exem" => $adresse
    ));
    $myData1 = array('result' => $sql);
    echo json_encode($myData1);
    $sql->closeCursor();

    $sqlSelect = $bdd->prepare("SELECT commentaire FROM tempSelector_template WHERE exemple= :exemp");

    $sqlSelect->execute(array(
        ":exemp" => $adresse
    ));

    $myData = array('result1' => $sqlSelect);
    echo json_encode($myData);
}

我从ajax获得了关于chrome' console =>

{"result":{"queryString":"UPDATE tempSelector_template SET commentaire= :com WHERE exemple = :exem "}}{"result1":{"queryString":"SELECT commentaire FROM tempSelector_template WHERE exemple= :exemp"}}

我的问题是我无法访问json中的数据并需要你的帮助

3 个答案:

答案 0 :(得分:1)

你有两个问题:

  1. 您发送的是无效的json:您需要构建一个数据结构(一个数组或一个对象),而不是在最后编码和回显一次。现在你已经在你的响应中连接了json,这使得解析起来非常困难。
  2. 你没有解析你在javascript中找到的json。当你返回有效的json(参见1.)时,你可以在你的ajax调用中添加dataType: 'json'让jQuery自动解析响应:

    $.ajax({ type: "POST", dataType: 'json', url: url, // etc.

答案 1 :(得分:1)

好的,所以你基本上会返回两组独立的json编码。它不起作用。你只能在阅读ajax时接受一套json。不是两个。在您的PHP脚本中,我看到您已包含以下部分。

$myData1 = array('result' => $sql);
    echo json_encode($myData1);

$myData = array('result1' => $sqlSelect);

  echo json_encode($myData);

你应该删除这两个部分,并使用array_merge

将它们组合成一个单独的数组
$myData1 = array('result' => $sql);
$myData = array('result1' => $sqlSelect);
echo json_encode(array_merge(myData1,  $myData));

也在你的ajax请求中,将dataType设置为json

$.ajax({
    type: "POST",
    url: url,
    dataType: 'json',
    data:  $(".formCom").serializeArray(),
    success: function(reponse){
        console.log(reponse);
    });

答案 2 :(得分:0)

所以你有一个表格,你想提交,ajax将在提交表格后返回一些数据。如果您想访问响应数据。你需要添加这些东西

1。)在$ .ajax对象中添加type = 'post' 2.)并使用JSON.parse(response)