jQuery 1.4.4和上传文件

时间:2014-11-13 20:20:27

标签: jquery

我正在开发一个拥有jQuery 1.4.4的系统,不会在不久的将来发生升级。因此,我遇到了一些问题,弄清楚如何提交带有文件的普通字段的表单。 (我需要在单击提交按钮后提交带有字段输入和单个文件上传的表单。)由于我已通过点击事件将所有内容都绑定到AJAX提交中,因此我有点陷入困境。从这个点击事件中做所有事情。

有没有办法通过使用AJAX提交所有内容的提交按钮点击事件上传其他正常字段输入的文件?目前,我使用以下代码提交表单:

$('#main').live('submit', function(e){
  e.preventDefault();

  ...$test is defined up here...

  var results = $.ajax({
   'async': false,
   'type': "POST",
   'global': false,
   'dataType': 'json',
   'data': $test, 
   'url': "test.php",
   'success': function (data) {
                result = data;
              }
  });
  return results;
}();

提交输入字符串和诸如此类的东西时,这是有效的。我可以看到文字"字符串名称"该文件,但$ _FILES数组(物理文件本身)没有像test.php上的var_dump($ _ FILES)那样被发送...

有没有办法做到这一切? AJAX是首选路线,但如果我必须创建一个可以提交所需字段+文件上传的不同表单,我可以...(它会很糟糕,因为我不想重复任何事情,如果我不必。)

(抱歉语法突出显示......仍然习惯了SO&#39编辑。)

更新:

以下是我正在使用的所有最新代码(它与上述内容略有不同,但我仍未在$ _FILES中看到任何内容) ...

标记:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>Test</title>
    </head>
    <body>
        <div id="wrapper">
            <form id="main" action="index.php" method="post" enctype="multipart/form-data">
                <input id="file" type="file" value="" />
                <input id="text" type="text" value="This is a test for the text input." />
                <button id="submit" type="button">Submit!</button>
            </form>
            <p><?php var_dump($_POST); var_dump($_FILES);?></p>
        </div>
        <script type="text/javascript" src="___includes/jquery.js"></script>
        <script type="text/javascript" src="___includes/j.js"></script>
    </body>
</html>

jQuery的:

 jQuery(function($) {

    $('#submit').live('click', function(e){
        e.preventDefault();
        $('#main').submit();
    });

    $("#main").live("submit", function(e){
        e.preventDefault();
        var $text = $('#text').val();
        var $file = $('#file').val();

        var results = $.ajax({
            'async': false,
            'type': "POST",
            'global': false,
            'dataType': 'xml',
            'data': {'text':$text,'file':$file}, 
            'contentType': "multipart/form-data",
            'url': "index.php",
            'success': function (data) {
                        $('#wrapper p').append(data);
                        }
        });
        console.log(results);
        $('#wrapper p').append(results);
        return results;
    });
});

0 个答案:

没有答案