下面你可以看到html代码,javascript / jquery和PHP。我正在尝试使用AJAX PHP发送请求,将多个变量发送到PHP,其中一个是FormData,另一个是来自输入等的一些文本或值。
这是html代码:
<div>
<p>Name:</p>
<input id="newP_name"></input>
<p>Product Image</p>
<input type="file" id="img"></input>
<p>Description:</p>
<textarea id="newP_desc"></textarea>
<button name="submitProductBtn" id="submitProductBtn">Submit</button>
这是我的javascript:
$("#submitProductBtn").click(function(){
var file_data = $('#img').prop('files')[0];
var form_data = new FormData();
form_data.append('file', file_data);
$.ajax({
url: 'imgParser.php',
dataType: 'text',
cache: false,
contentType: false,
processData: false,
data: form_data, name: "John",
type: 'POST',
success: function (response) {
alert(response);
},
error: function (response) {
alert("ERROR OCCURED");
}
});
});
正如您所看到的,我正在尝试传递给'data:'FormData(图像)和第二个变量名。
这是PHP代码:
<?php
if(isset($_FILES["file"]["name"])){
if($_FILES["file"]["error"] == 0){
move_uploaded_file($_FILES["file"]["tmp_name"], "images/".$_FILES["file"]["name"]);
echo $_POST["name"];
}else{
echo $_POST["name"];
}
}
?>
我希望它能打印“John”,但警告为空白,图片显示 - &gt;
任何帮助表示赞赏, 提前谢谢。
编辑:
稍微更改了jQuery代码,仍然输出为空,但是当我在PHP中注释掉代码(在结束标记之下)时,它会打印出来。
这是我的新jquery代码:
$("#submitProductBtn").click(function(){
var file_data = $('#img').prop('files')[0];
var form_data = new FormData();
form_data.append('file', file_data);
form_data.append('name', "John");
$.ajax({
url: 'imgParser.php',
dataType: 'text',
cache: false,
contentType: false,
processData: false,
data: form_data,
type: 'POST',
success: function (response) {
alert(response);
},
error: function (response) {
alert("ERROR OCCURED");
}
});
});
答案 0 :(得分:1)
将所有数据字段附加到表单数据对象,就像使用文件
一样form_data.append('file', file_data);
form_data.append('name', 'John');
答案 1 :(得分:-1)
我不确定form_data
或许你可以试试这个,
form_data.append('file', file_data);
form_data.append('name', 'john');
并在form_data
属性
data
$.ajax({
...
...
data: form_data