提交表单后无法检索POST数据

时间:2014-03-12 15:00:57

标签: javascript php jquery html ajax

大家好,

我尝试使用jQuery将一些(POST)数据发送到PHP文件,但我得到了#34;未定义索引"每次提交表单时都会出错。

upload.html

<form id="formx" action="upload.php" onSubmit="return false" method="post" enctype="multipart/form-data">
<b>Upload new image</b> <br />
            <input type="button" id="get_file" value="Grab file">
            <div id="customfileupload">Select a file</div>
            <input type="file" id="file_input" name="uploadedfile">
            <br />
            <input type="submit" name="upload" id="upload" value="Upload image" />
        <div id="status"></div>
    </div>
</form>

upload.js

var options = { 
        target: '#status',  
        type: "POST",
        data: "dir=music",
        dataType: "html",
        beforeSubmit:  beforeSubmit, 
        uploadProgress: OnProgress,
        success:       afterSuccess,
        error: function(hr, ajaxOptions, thrownError)
        {
            status.html("<font color='red'> ERROR: unable to upload file.</font>"+thrownError);
        },
        resetForm: true  
    }; 

 $('#formx').submit(function(event) { 
        $(this).ajaxSubmit(options);             
        event.preventDefault();
    });

upload.php的

<?php

echo "->".$_POST['dir'];

?>

很明显,我没有正确发送数据。我尝试过更改dataType,但仍未获得所需的结果。如果有人可以告诉我如何解决这个问题,我真的很感激。

提前致谢,

Alex

2 个答案:

答案 0 :(得分:2)

尝试将数据作为JavaScript对象发送,并添加要发送到的网址。默认情况下,您的脚本将从表单属性中获取URL。

data: {
    "dir": "music"
},
url: "upload.php"

取自jQuery文档

  

要发送到服务器的数据。它被转换为查询字符串if   还不是一个字符串。它附加到GET请求的URL。看到   processData选项可防止此自动处理。 对象必须   是键/值对。如果value是一个数组,jQuery序列化多个   具有相同键的值基于传统设置的值   (如下所述)。

https://api.jquery.com/jQuery.ajax/

答案 1 :(得分:0)

dataType参数实际上是您从php文件获取的数据,它与您发送的数据无关。

话虽如此,我认为options数组中应该有一个url元素应该将数据发送到upload.php,所以你会有这样的东西:

var options = { 
        target: '#status',
        url: '/path/to/upload.php',
        type: "POST",
        data: "dir=music",
        dataType: "html",
        beforeSubmit:  beforeSubmit, 
        uploadProgress: OnProgress,
        success:       afterSuccess,
        error: function(hr, ajaxOptions, thrownError)
        {
            status.html("<font color='red'> ERROR: unable to upload file.</font>"+thrownError);
        },
        resetForm: true  
    };