在我的网页上我有这样的表格:
class MySpider(scrapy.Spider):
name = "myspider"
start_urls = (
'http://scrapy.org',
)
def start_requests(self):
headers= {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:48.0) Gecko/20100101 Firefox/48.0'}
for url in self.start_urls:
yield Request(url, headers=headers)
如您所见,有一个文件输入和两个下拉列表。 我需要通过Ajax将这些信息传递给名为'upload'的php文件。
所以我在Jquery中写这个脚本:
<form style="width:100%; clear:both; margin-top:50px; background:#fff; border:1px solid green" id="upload_form" enctype="multipart/form-data" class="form" action="" method="post">
<fieldset>
<input name="somefield" style="display:none" value="">
<ul style="width:100%; padding:0 20px">
<li>
<label>Upload</label>
<input type="file" name="upload" id="upload" required accept=".pdf, .doc"/>
</li>
<li>
<label>Language </label>
<select name="language">
<!-- SOME OPTIONS -->
</select>
</li>
<li>
<label>Category </label>
<select name="category">
<!--SOME OPTIONS-->
</select>
</li>
<li class="privacy">
<input style="margin-top:22px; " name="submit2" class="button" type="submit" value="Save" />
</li>
</ul>
</fieldset>
</form>
对于测试,这是我的upload.php文件中的内容
$(document).ready(function()
{
// Form Upload
var uploadForm = $("#upload_form");
var formData = new FormData(uploadForm[0]);
// submit action
uploadForm.submit(function(e) {
e.preventDefault();
$.ajax({
url: 'upload.php',
data: formData,
type: 'POST',
contentType: false,
processData: false,
success: function(d) {
alert(d);
}
});
});
}
);
在警告框中,我收到此输出:
print_r($_FILES); die(); // Testing
如何在同一个Ajax Call中提交所有表单? 这是正确的方法吗? 我应该设置两个不同的ajax调用吗?
感谢您的帮助。
答案 0 :(得分:0)
好的,我找到了解决方案。 这是我犯的一个愚蠢的错误。
这是正确的脚本:
// Form Upload
var uploadForm = $("#upload_form");
uploadForm.submit(function(e) {
e.preventDefault();
// Moved inside
var formData = new FormData(uploadForm[0]);
console.log(formData);
$.ajax({
url: 'function/upload.php',
data: formData,
type: 'POST',
contentType: false,
processData: false,
success: function(d) {
console.log(d);
}
});
});
它给了我这个输出:
Array
(
[upload] => Array
(
[name] => somefile.pdf
[type] => application/pdf
[tmp_name] => /tmp/phpB3t2vF
[error] => 0
[size] => 2444
)
)