【问题标题】:Ajax Successfully Receive Data From Server, But Failed Sending ItAjax 成功从服务器接收数据,但发送失败
【发布时间】:2016-04-23 08:52:58
【问题描述】:

我有这个 ajax 工作正常:

$.ajax({
    url: "../../../controller/ctrl.test.php",
    success:function(expirytime){
        alert(expirytime);
    }
});

但是当我需要向服务器发送数据并添加此行时,它不会再次提醒expirytime

$.ajax({
    url: "../../../controller/ctrl.test.php",
    type: 'POST',
    contentType:'application/json',
    data: JSON.stringify(data),
    dataType:'json',
    success:function(expirytime){
        alert(expirytime);
    }
});

请注意data 是 json 数据。我在这些代码上面有它。所以,它不是空的。我只是想知道为什么在我的第一个 ajax 中添加 POST 机制会导致 alert(expirytime); 停止工作?

我的代码有什么问题?谢谢

更新:为了这个测试目的,PHP文件中没有任何内容,只是回显日期和时间

<?php
$date = '2016/04/30 00:00:00';
echo $date;
?>

【问题讨论】:

  • 警报输出什么? [Object][object]?
  • @RobertHanson 我的意思是这个$.ajax({ url: "../../../controller/ctrl.test.php", type: 'POST', contentType:'application/json', data: JSON.stringify(data), dataType:'json', success:function(expirytime){ alert(expirytime); } });这是有问题的,对吗?警报显示什么?它甚至显示吗?
  • 我会假设您从 php 文件中返回的不是 JSON。 检查网络 > XHR 获取 ajax 响应
  • 使用dataType: "text",应该没问题
  • 应该没问题。当您指定dataType:json 时,ajax 期望从您的 php 响应 JSON 类型,当您返回一个字符串时,它没有识别响应,因此它没有何时成功但错误,这就是它没有显示任何警报的原因。而 @ 987654331@这里是你发送到php的数据,对dataType:text,没有影响

标签: javascript jquery ajax


【解决方案1】:

因为你有dataType: 'json',jQuery 期望来自 PHP 的响应是有效的 JSON。但是

echo $date;

没有返回有效的 JSON。当 jQuery 在该响应上调用 JSON.parse() 时,会收到错误,因此不会调用 success 函数。

将该行更改为:

echo json_encode($date);

它应该可以工作。或者把dataType: 'json'改成dataType: 'text'

【讨论】:

    【解决方案2】:

    试试这个

    $.ajax({
        url: "../../../controller/ctrl.test.php",
        type: 'POST',
        data: { JSON.stringify(data) },
        dataType: 'json',
        success:function(expirytime){
            alert(expirytime);
        }
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-23
      • 1970-01-01
      相关资源
      最近更新 更多