如何以ajax形式创建回调?

Joh*_*com 1 javascript ajax jquery callback

如何在服务器上传文件后创建回调?

我希望在JS函数调用后在服务器上上传文件.我想调用该函数addDownload,在此函数完成后,调用下一个javascript函数.我怎样才能做到这一点?

我有以下源代码:

HTML:

<form id="imageform" method="post" enctype="multipart/form-data" action="actions/downloadsadd.php">
 <strong>File: </strong><input name="photoimg" id="photoimg" style="width: 100px;" type="file" />
Select Image: <br />
<div id="divPreview"></div>
</form>
Run Code Online (Sandbox Code Playgroud)

使用Javascript:

addDownload: function ()
    {

        $("#divPreview").html('');
        $("#divPreview").html('<img src="Images/loader.gif" alt="Uploading...."/>');
        $("#imageform").ajaxForm(
        {
            target: '#divPreview'
        }).submit();             
    },
Run Code Online (Sandbox Code Playgroud)

PHP - downloads.php:

public function addDownloads() {

            $db = new DB();
            $db->connect();

            $path = "../../images/upload/files/";

            $valid_formats = array("php", "phtml", "php3", "php4", "js", "shtml", "pl", "py", "html", "exe", "bat", "htm", "sql");
            if (isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST") {
                $name = $_FILES['photoimg']['name'];
                $size = $_FILES['photoimg']['size'];
                if (strlen($name)) {
                    list($txt, $ext) = explode(".", $name);
                    if (!in_array($ext, $valid_formats)) {
                        if ($size < (1024 * 1024)) { // Image size max 1 MB
                            $actual_image_name = time() . "." . $ext;
                            $tmp = $_FILES['photoimg']['tmp_name'];
                            if (move_uploaded_file($tmp, $path . $actual_image_name)) {


                                $arr = array(
                                    'file' => $actual_image_name
                                );


                                dibi::query('INSERT INTO [downloads]', $arr);

                                echo "FILE:" .$actual_image_name;
                            }
                            else
                                echo "Failed upload!";
                        }
                        else
                            echo "Image file size max 1 MB";
                    }
                    else
                        echo "Invalid file format..";
                }
                else
                    echo "Please select image..!";
            }
        }
Run Code Online (Sandbox Code Playgroud)

Ale*_*ios 6

只是猜测,但你的代码似乎使用jQuery表单插件: $("#imageform").ajaxForm(...);

该插件允许您使用该success选项添加回调函数.当AJAX请求(即您正在调用的PHP文件中的所有代码)成功完成时,将调用此函数.

$("#imageform").ajaxForm({
    target: '#divPreview',
    data: {
        var1: $("#inputText").val()   //assuming #inputText is a text field
    },
    success: function() {
        alert("Callback!");
    }
}).submit();
Run Code Online (Sandbox Code Playgroud)

请参阅文档以获取进一步参考.