我正在使用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”
有什么建议吗?谢谢:)
答案 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));
此链接可以帮助您
答案 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>
,您的语法肯定是正确的