AJAX POST返回数据未显示

AJAX POST return data not appearing

本文关键字:显示 数据 返回 POST AJAX      更新时间:2023-09-26

我有一个AJAX调用,它在表单提交上运行(带有阻止默认值以停止标准提交):

var form = $(this);
$.ajax({
    type: form.attr('method'),
    url: form.attr('action'),
    data: form.serialize()
}).done(function(data) {
    $('#processingFile').hide();
    $('#downloadFile').show();
    $('#shareURL').val(data.url);
    $('#downloadFile').attr('href', data.url);
    $('#aboutFile').html('<b>File URL:</b> ' + data.url + '<br /><b>File Size:</b> ' + data.size + '<br /><b>Time Stamp:</b> ' + data.timestamp + '<br /><b>Client IP:</b> ' + data.ip);
}).fail(function() {
    $('#saveFile').hide();
    $('#error').show();
});

它提交的文件是一个PHP文件,如下所示:

// VARIABLES
$fileURL = $_POST['fileURL'];
$tmpURL = substr(md5(rand()), 0, 7);
$deleteCode = md5($tmpURL);
// COOKIE
setcookie($tmpURL, $deleteCode, time()+86400);
// SAVE FILE
if($fileURL){
    file_put_contents("tmp/" . $tmpFile, file_get_contents("http://" . $fileURL));
}
// OUTPUT
$result = array(
    'url' => "tmp/" . $tmpFile,
    'size' => filesize("tmp/" . $tmpFile) * .0009765625 * .0009765625,
    'timestamp' => date('H:i:s d-m-Y'),
    'ip' => $_SERVER['REMOTE_ADDR']
);
echo json_encode($result);

当脚本在任何地方运行时,在jQuery中使用data.x会返回undefined。知道为什么会发生这种情况以及如何解决吗?

data是一个包含返回的JSON文本的字符串;它不是一个物体。

要解析JSON对象,您有两个选项:

  • 亲自致电JSON.parse()

  • 通过dataType: "json"告诉jQueryAJAX为您解析它。

  • 在服务器的响应中设置Content-Type: application/json,以便jQuery知道为您解析它。

设置dataType:'json'并检查!查看此文档并设置您的日期类型。