谁能帮助我在与PHP一起使用的此代码Ajax中出什么问题?

时间:2018-10-22 07:45:38

标签: php jquery ajax

这是将数据插入数据库的代码。并将结果发送回ajax代码。

<?php

if (isset($_FILES['files']['name'])) {
    $files = $_FILES['files']['name'];
    $desc = $_POST['description'];
    $subject = $_POST['subject'];
    $path = 'Lectures/' . $files;
    move_uploaded_file($_FILES["files"]["tmp_name"], $path);
    $date = date('d-M-y');

    $query = "INSERT INTO content(file_name,course_code,description,file_path,upload_date) VALUES ('$files','$subject','$desc','$path','$date')";

    $cm = sqlsrv_query($conn, $query);
    if ($cm) {
        $result['status'] = "Succsess";
    } else {
        $result['status'] = "failed";
    }
    echo json_encode($result);
}

这是Ajax Success: function。即使条件为true,它也仅执行else部分。

success: function(output) {
    alert(output);
    if(output.status == "Succsess")
    { 
        alertify.success('Success message');
    }else{
        alertify.set('notifier','delay', 2);
        alertify.set('notifier','position', 'top-right');
        alertify.error('Error message');
    }
    readRecords();
    $('#form1').trigger("reset");
}

1 个答案:

答案 0 :(得分:1)

  

警报(输出);如果插入了数据,则显示成功消息。

它应该显示[object Object]

您正在查看的是字符串,而不是从JSON解析的对象。

由于它是字符串,所以没有status属性。

const output = '{ "status": "Succsess" }';
alert(output);
alert(output.status);

您需要告诉jQuery响应是JSON,因此它将解析为一个对象。

header("Content-Type: application/json");
echo json_encode($result);

请注意,您必须set the headers before sending any other output

在不显式设置Content-Type头的情况下,PHP将默认声明JSON是HTML…而不是HTML。

请注意,以下内容仅是示例。您不应将JSON.parse添加到客户端代码中。 jQuery将在后台执行此操作。

const output = JSON.parse('{ "status": "Succsess" }');
alert(output);
alert(output.status);