使用重写的URL,JQuery上载不适用于页面

时间:2012-07-31 12:37:37

标签: php jquery ajax mod-rewrite

我找到了一个带有进度条的php jquery上传脚本,它实际上有效。

问题是,如果我使用apache mod rewrite来重写从http://www.mysite.com/upload.phphttp://www.mysite.com/uploads/upload.php的网址,它就不起作用但如果我使用的是unrewritten网址则会有效

为什么jquery不能在重写的url上运行?

它不使用jquery表单来上传上传而只是正常上传。

这是upload.php的代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Ajax Upload and Resize with jQuery and PHP</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript" src="js/jquery.form.js"></script>
 <script> 
        $(document).ready(function() { 
        //elements
        var progressbox     = $('#progressbox');
        var progressbar     = $('#progressbar');
        var statustxt       = $('#statustxt');
        var submitbutton    = $("#SubmitButton");
        var myform          = $("#UploadForm");
        var output          = $("#output");
        var completed       = '0%';

                $(myform).ajaxForm({
                    beforeSend: function() { //brfore sending form
                        submitbutton.attr('disabled', ''); // disable upload button
                        statustxt.empty();
                        progressbox.slideDown(); //show progressbar
                        progressbar.width(completed); //initial value 0% of progressbar
                        statustxt.html(completed); //set status text
                        statustxt.css('color','#000'); //initial color of status text
                    },
                    uploadProgress: function(event, position, total, percentComplete) { //on progress
                        progressbar.width(percentComplete + '%') //update progressbar percent complete
                        statustxt.html(percentComplete + '%'); //update status text
                        if(percentComplete>50)
                            {
                                statustxt.css('color','#fff'); //change status text to white after 50%
                            }
                        },
                    complete: function(response) { // on complete
                        output.html(response.responseText); //update element with received data
                        myform.resetForm();  // reset form
                        submitbutton.removeAttr('disabled'); //enable submit button
                        progressbox.slideUp(); // hide progressbar
                    }
            });
        }); 

    </script> 
 <link href="style/style.css" rel="stylesheet" type="text/css" />
</head>
<body>

<form action="processupload.php" method="post" enctype="multipart/form-data" id="UploadForm">
<table width="500" border="0">
  <tr>
    <td>File : </td>
    <td><input name="ImageFile" type="file" /></td>
  </tr>

  <tr>
    <td>&nbsp;</td>
    <td><input type="submit"  id="SubmitButton" value="Upload" /></td>
  </tr>
</table>
</form>

<div id="progressbox"><div id="progressbar"></div ><div id="statustxt">0%</div ></div>
<div id="output"></div>


</body>
</html>

编辑:

htaccess附件(精简版)

Options +FollowSymLinks
Options +Indexes
RewriteEngine on
RewriteBase /

RewriteRule ^admin$ admin/ [R,L]

# Admin rewrite rules
RewriteRule ^/?admin/$ admin/index.php [NC,L]
RewriteRule ^/?admin/news$ /admin/news.php [NC,L]
RewriteRule ^/?admin/uploads/upload$ /admin/upload.php [NC,L]

1 个答案:

答案 0 :(得分:3)

我的猜测是罪魁祸首是缺少目标页面(<form>操作指向的页面。

它可能在uploads/processupload.php(使用重写时)和processupload.php时没有找到它。

你probalby忘了重写processupload.php,但在你发布.htaccess文件之前我无法确定。