jQuery AJAX将多个变量传递给数据

时间:2017-07-24 18:16:00

标签: javascript php jquery html ajax

下面你可以看到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;

enter image description here

任何帮助表示赞赏, 提前谢谢。

编辑:

稍微更改了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");
            }
        });
    });

2 个答案:

答案 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