0

我正在为 AJAX 文件上传器使用JQuery 表单插件。

(html) 表单是动态创建的,如下所示:

<form id="formUpload" action="fileReceiver.php" method="post" enctype="multipart/form-data">
    <input type="file" name="fileUpload" multiple>
    <input type="submit" value="Upload File to Server">
</form>

因为,表单是动态创建的,所以我使用 jquery on()。我还需要发送一些变量,我正在使用插件中的数据选项

Javascript 看起来像这样:

$(document).on("submit", "form#formUpload", function() {
    $(this).ajaxForm({
        data: { someVariable : 'someValue' },
        complete: function(xhr) {
            status.html(xhr.responseText);
        }
    }); 
});

我认为表单绑定正确,我可以通过 beforeSend 或 Success 选项从 ajaxForm(jquery 表单插件)函数调用/警告某些内容。

现在,问题是 PHP 无法获取我在 Javascript 中发布的数据。

我的 PHP 很简单,如下所示:

<?php
   echo $_POST["someVariable"];
?>

它给了我错误“注意:未定义的索引:someVariable blah blah blah”

有什么建议吗?谢谢 :)

4

3 回答 3

0

如果您已经添加了 jQuery 表单插件,请尝试查找...

<script src="jquery.form.js"></script>

根据http://malsup.com/jquery/form/#options-object ,您的语法绝对正确

于 2013-05-14T12:40:07.883 回答
0

好吧,如果您的表单是动态添加的,那么您必须使用DOMNodeInsertedevent 而不是submit. 这样,只要 DOM 中有一些添加,您的表单就会附加到表单插件。

您可以用以下内容替换您的功能 -

    $(document).on("DOMNodeInserted", "form#formUpload", function() {
        $(this).ajaxForm({
            data: { someVariable : 'someValue' },
            complete: function(xhr) {
                // do something 
            }
        });
    });

但是请记住,DOMNodeInserted只要在 DOM 中添加任何类型的内容,使用 event 就会触发该方法。所以只要把必要的东西(在这种情况下表单插件初始化#formUpload)。

于 2013-03-19T15:37:26.893 回答
0

尝试在表单内的隐藏输入中添加一些变量

<input type="hidden" name="someVariable" value="someValue">

并删除 $(document).on("submit",... 事件

你可以试试

var input = $("<input>").attr("type", "hidden").attr("name", "someVariable").val("someValue");
$('#formUpload').append($(input));

这个链接可以帮助你

http://www.malsup.com/jquery/form/progress2.html

http://www.malsup.com/jquery/form/file-echo2.php.txt

于 2013-03-19T12:17:35.700 回答