【问题标题】:No alert from Ajax call没有来自 Ajax 调用的警报
【发布时间】:2015-09-23 16:55:08
【问题描述】:

我正在尝试从 Ajax 调用中提醒一些数据。谁能发现我做错了什么?

PHP

while($row = $stmt->fetch()){
    echo json_encode($row);
}
echo "Done!";

来自 Json_encode / 网络预览的结果

{"flakId":"21098-10_flak-2"}{"flakId":"21098-10_flak-1"}Done!

JS

if(chosenObjNr){
    alert('I CAN see this alert')
    $.ajax({
        url:'php/update.php',
        type: 'POST',
        data: 'chosenObjNr=' + chosenObjNr,
        dataType: 'json',
        error: function (data){ alert("failed, i can see this!");},             
        success: function(data){  

            alert('I cannot see this alert!');
            alert(data);

            var data0;
            data0 = data[0];
            alert(data0);

            var falkId;
            flakId = data[0];
            alert(flakId);

            console.log(data);
        }

    });

};

结果

没有警报,控制台中什么也没有。

【问题讨论】:

  • 你需要展示更多你的代码
  • 告诉我你需要什么?其余代码工作正常。我看不出有什么关系!
  • 你正在给小sn-ps,需要看到更多的周围代码,就像AJAX调用的其余JS一样
  • 我可以回显 Json_encode($row)... 所以我的 ajax 调用有效。但不是取得成功?!
  • 另外,最好看看 PHP 端发生了什么。如果没有任何警报,那很可能意味着您的 PHP 代码中没有返回任何内容。你能在你的 PHP 中运行一个简单的echo "I am here"; 并让我们知道它是否被返回吗?

标签: javascript php ajax


【解决方案1】:

问题是,ajax 的success 部分永远不会运行。您将 dataType 定义为 json,因此它需要 json。你的 PHP 是 echos 2 json 和一个不需要的字符串。

所以,要检查您的错误是什么,请在评论中添加 fail 函数作为新浪悲伤:

if (chosenObjNr) {
alert('I CAN see this alert')
$.ajax({
    url: 'php/update.php',
    type: 'POST',
    data: 'chosenObjNr=' + chosenObjNr,
    dataType: 'json',
}).done(function (data) {
    alert('I cannot see this alert!');
    //Do what you want to do here
}).fail(function (msg) {
    alert('An error occured: ' + msg.statusText);
});

}

而且,如果您想修复 .php 删除 echo 'Done'; 部分,并将您的记录添加到数组中,完成后将其编码为 json:

$return = array();
while ($row = $stmt->fetch()) {
    $return[] = $row;
}
echo json_encode($return);

【讨论】:

  • 完美!谢谢你。我如何提醒数组中的第一个数据?试过:警报(数据[0]);没有成功。它说:[object object]
  • 不使用警报,使用console.log(data); 您可以在$.each(data, function(index, object) { console.log(object) });等数据上进行迭代
  • 就像这里的旁注一样,为了确保人们不会感到困惑,success 不会以 OP 使用它的方式被弃用。 stackoverflow.com/questions/15821141/…
  • @Rasclatt 感谢您的更正。我从我的答案中删除了那部分。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多