【问题标题】:How to Insert ajax data into table in modal如何以模态方式将ajax数据插入表中
【发布时间】:2017-10-05 02:31:27
【问题描述】:

这是 ajax 代码,它获取 json 中的数据并使用数据创建一个表。但我收到了这个错误:

解析器错误

$('#loadddx').click(function(e) {
    e.preventDefault();
    $.ajax({
        url: $(this).attr('href'), // Example: ajax.php?id=
        dataType: 'json',
        success: function(resp) {
            var trHTML = '';
            $.each(resp, function(i, userData) {
                for (i = 0; i < resp.userData.length; i++) {
                    trHTML +=
                        '<tr><td>' +
                        resp.userData[i].pais +
                        '</td><td>' +
                        resp.userData[i].data +
                        '</td><td>' +
                        resp.userData[i].origem +
                        '</td><td>' +
                        resp.userData[i].ip +
                        '</td><td>' +
                        resp.userData[i].isp +
                        '</td><td>' +
                        resp.userData[i].browser +
                        '</td><td>' +
                        resp.userData[i].os +
                        resp.userData[i].newid +
                        '</td></tr>';
                }
            });
            $('#result').append(trHTML);

            console.log(resp);
            $("#showDataa").modal("show");

        },
        error: function(xhr, status) {
            console.log(status);
        }
    });
});

这里是返回数据的.php文件

$res = [];
while ($stmt - > fetch()) {
$res[] = array("success" => true, "pais" => $pais, "data" => $data, "origem" => $origem, "ip" => $ip, "isp" => $isp, "browser" => $browser, "os" => $os, "newid" => $newid);
echo json_encode($res);
}

谁能帮帮我?

【问题讨论】:

  • 在您的开发者工具的网络选项卡中(按 F12)请求的内容是什么样的?我认为你没有返回 json。您还可以在 JavaScript 中添加debugger 语句,您的代码将暂停,以便您检查结果或console.log(resp)
  • 错字resp.UserData应该是resp.userData
  • 你也不能回显数组
  • @user2486 我改了,但是错误还在,我改了帖子
  • 您更新的帖子不包含@user2486 建议您应该做出的更改。将for (i = 0; i &lt; resp.UserData.length; i++) { 更改为for (i = 0; i &lt; resp.userData.length; i++) {

标签: javascript php jquery ajax


【解决方案1】:

尝试如下更新您的 PHP:

$stmt->fetch();
echo json_encode(array("success" => true, "pais" => $pais, "data" => $data, "origem" => $origem, "ip" => $ip, "isp" => $isp, "browser" => $browser, "os" => $os, "newid" => $newid));

不确定while 循环的用途是什么?如果循环中的值是由 $stmt-&gt;fetch() 每次迭代更新的全局值,并且您需要多次迭代,请尝试以下操作:

$res = [];
while($stmt->fetch()) $res[] = array("success" => true, "pais" => $pais, "data" => $data, "origem" => $origem, "ip" => $ip, "isp" => $isp, "browser" => $browser, "os" => $os, "newid" => $newid);
echo json_encode($res);

更新

假设您使用了我给您的第一个 PHP 示例,请按如下方式更新您的 JS。不确定您附加表格行的方式是最好的,但这应该可以解决您的问题。如果不是,请提供console.log 输出以供resp:

$('#loadddx').click(function(e) {
    e.preventDefault();
    $.ajax({
        url: $(this).attr('href'), // Example: ajax.php?id=
        dataType: 'json',
        success: function(resp) {
           console.log(resp);
           
           $('#result').append(
             '<tr><td>' +
             resp.pais +
             '</td><td>' +
             resp.data +
             '</td><td>' +
             resp.origem +
             '</td><td>' +
             resp.ip +
             '</td><td>' +
             resp.isp +
             '</td><td>' +
             resp.browser +
             '</td><td>' +
             resp.os +
             resp.newid +
             '</td></tr>';
           }

           $("#showDataa").modal("show");
        },
        error: function(xhr, status) {
            console.log(status);
        }
    });
});

【讨论】:

  • 您是否也将resp.UserData.length 更改为resp.userData.length
  • 是的,我改变了,我得到了这个错误:Uncaught TypeError: Cannot read property 'length' of undefined in for (i = 0; i &lt; resp.userData.length; i++)
  • @NathanSilva - 我已经更新了我的答案以包含一些 JS。如果这不能为您解决问题,请提供console.log(resp) 的控制台输出。我怀疑resp.userData 需要resp.data 查看您的PHP
  • 我仍然在 console.log(status); 中收到 parsererror 我不明白为什么
  • @NathanSilva - ID 为“loadddx”的锚的 href 是否指向正确的端点?换句话说,PHP 提供了。 Parsererror 将指示响应不是有效的 JSON。删除dataType: 'json' 行并提供resp 的控制台日志输出。这将阻止 jQuery 尝试解析 JSON,因此我们可以看到原始 AJAX 响应。
猜你喜欢
  • 1970-01-01
  • 2018-03-18
  • 2019-11-26
  • 2018-01-25
  • 1970-01-01
  • 1970-01-01
  • 2015-04-30
  • 2023-04-03
  • 2015-11-06
相关资源
最近更新 更多