【问题标题】:Get custom response from PHP for Jquery file uploader从 PHP 获取 Jquery 文件上传器的自定义响应
【发布时间】:2014-05-12 10:57:56
【问题描述】:

我想从 PHP 服务获取自定义响应以进行 jquery 文件上传。

<?php

//database query to insert data

$sql_params['document_name'] = name;
$sql_params['document_location'] =document_location;
$sql_params['document_size'] = document_size;
$sql_params['document_id'] = $document_id;

echo json_encode($sql_params);

?>

Javascript 代码:

           this.$('#fileupload').fileupload({
                dataType: 'json',
                add: function(e, data) {
                    var filename = data.files[0].name;

                    var jqXHR = data.submit()
                        .success(function(result, textStatus, jqXHR) {
                            console.log('success');
                            console.log(result);
                            console.log(textStatus);
                        })
                        .error(function(jqXHR, textStatus, errorThrown) {

                        }).complete(function(result, textStatus, jqXHR) {
                            console.log('complete');
                            console.log(result);
                        });
                },
                done: function(e, data) {

                    console.log(data.result);
                },

                progressall: function(e, data) {

                }
            });

            this.$('#fileupload').fileupload('option', {
                url: 'api/app/file',
                maxFileSize: 100000,
                acceptFileTypes: /(\.|\/)(txt|pdf|doc|docx|jpg|gif|xls|xlsx|rtf)$/i
            });

我想得到 json 响应:

{"document_name":"file (9).txt","document_location":"location","document_size":2720,"document_id":"44"}

但我总是得到:

[{"name":"file (9).txt","size":2720,"type":"text\/plain","url":"location","delete_url":"some URL","delete_type":"DELETE"}]

【问题讨论】:

  • 能否请您在浏览器上打开 firebug 控制台并查看 ajax 响应数据?我的意思是整个响应。
  • 是的,我可以看到响应数据。但是对于同一个 URL 有两个 post 请求,并且两个 ajax 响应都存在。
  • 请把它们放在你的问题中以便分析
  • 我已经发布了两个 JSON 响应。请告诉我你需要什么。
  • 顺便说一下,这是由于 blueimp 的默认响应。为什么要获得自定义响应?

标签: javascript php jquery file-upload blueimp


【解决方案1】:

由于 Blueimp,您会收到默认响应。您可以使用 blueimp 中的另一个 ajax 查询从 db 获取最新文件;

.....
add: function(e, data) {
    var filename = data.files[0].name;

    var jqXHR = data.submit()
        .success(function(result, textStatus, jqXHR) {
            console.log('success');
            console.log(result);
            console.log(textStatus);
        })
        .error(function(jqXHR, textStatus, errorThrown) {

        }).complete(function(result, textStatus, jqXHR) {
            $.ajax({
                url: "getlatestfile.php",
                method: "POST",
                data: "url=" + result[0].url, // this is unique url of uploaded file
                success: function(response) {
                    //response has doc id
                }

            });
        });
}
....

在你的 php 处理程序中;

getlatestfile.php

<?php
......
if (empty($_POST["url"])) {
    die("Url must be specified");
} 

$url = $_POST["url"];

$sql = "SELECT *FROM your_table WHERE url = $url ORDER BY date DESC LIMIT 1";
// get $result
echo $result;

【讨论】:

    猜你喜欢
    • 2012-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-21
    • 2015-07-21
    相关资源
    最近更新 更多