JQuery Form Plugin,无法在PHP中接收数据

时间:2013-03-19 11:49:18

标签: php jquery plugins

我正在使用JQuery Form Plugin进行AJAX文件上传。

(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>

因为表单是动态创建的,所以我在j()上使用了jquery。我还需要发送一些变量,我正在使用插件中的data options

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 blah”

有什么建议吗?谢谢:)

3 个答案:

答案 0 :(得分:0)

尝试在表单

中的隐藏输入中添加一些变量
<input type="hidden" name="someVariable" value="someValue">

并删除$(document).on(“submit”,... event

你可以尝试

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

答案 1 :(得分:0)

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

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

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

但请记住,只要在DOM中添加任何类型,使用DOMNodeInserted事件就会触发该方法。所以只需放置必要的内容(在本例中为#formUpload形式插件初始化)。

答案 2 :(得分:0)

尝试找出你是否已经添加了jQuery Form Plugin ...

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

根据http://malsup.com/jquery/form/#options-object

,您的语法肯定是正确的