【问题标题】:Can anyone help me what is wrong in this code ajax using with php? [closed]任何人都可以帮助我在这个代码 ajax 中使用 php 有什么问题吗? [关闭]
【发布时间】:2018-10-22 07:45:38
【问题描述】:

这是将数据插入数据库的代码。并将结果发送回 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。即使条件为真,它也只执行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");
}

【问题讨论】:

  • output.status == "Succsess" 只是一个想法,正确的拼写可以帮助减少错误并使代码更易于理解。您是否检查过 outputsuccess 处理程序中包含的内容?
  • 在控制台检查请求。从逻辑上不难看出output.status 不等于Succsess。您需要准确确定该值是什么。
  • 您也对 SQL 注入持开放态度 - 应该尽快解决
  • 你的ajax 代码中有dataType :json 吗?如果没有,那么您必须先解析即将到来的响应,然后才能进行比较
  • @freedomn-m — 这并不神奇,它基于内容类型响应标头,而我们展示的代码中并未设置该标头。 (它可能设置在别处)。

标签: php jquery ajax


【解决方案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 ......它不是。

请注意,以下内容仅用于示例。您不应该将JSON.parse 添加到您的客户端代码中。 jQuery 会在幕后做这件事。

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

【讨论】:

    猜你喜欢
    • 2017-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-25
    • 1970-01-01
    • 2022-12-31
    相关资源
    最近更新 更多