Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can';t使用php和jquery上传文件_Php_Jquery - Fatal编程技术网

Can';t使用php和jquery上传文件

Can';t使用php和jquery上传文件,php,jquery,Php,Jquery,我已经尝试了很多方法,但仍然不能解决这个问题。如果我在uploadscript.js中注释submitHandler命令,代码就可以上载文件。但是,当我取消注释该行时,php应该返回“registered”到uploadscript.js,然后出现成功消息。相反,它表示抱歉!无法提交你的论文 <!-- file: newsubmission.php --> <script src="../../js/jquery1.11.3.min.js"></script>

我已经尝试了很多方法,但仍然不能解决这个问题。如果我在uploadscript.js中注释submitHandler命令,代码就可以上载文件。但是,当我取消注释该行时,php应该返回“registered”到uploadscript.js,然后出现成功消息。相反,它表示抱歉!无法提交你的论文

<!-- file: newsubmission.php -->
<script src="../../js/jquery1.11.3.min.js"></script>
<script type="text/javascript" src="../../js/validation.min.js"></script>    
<script src="../../js/uploadscript.js"></script>
<script src="../../js/jquery.additional.methods.js"></script>
<!-- html form -->
<form class="form-signin" method="post" id="upload-form" enctype="multipart/form-data">
<div class="form-group">
<input type="file" name="papers" id="papers" placeholder="File Name" class="form-control" style="width:300px">
</div>
</form>

这是我的uploadscript.js

// JavaScript Document
$('document').ready(function()
{ 
$("#upload-form").validate({
    rules: {
        papertitle: {
            required: true
        },
        authors: {
            required: true
        },
        papers: {
            required: true,
            extension: "doc|docx|pdf|DOC|DOCX|PDF"
        },
        categoryid: {
            required: true
        },
        eventid: {
            required: true
        }
    },
    messages: {
        papertitle: {
                required: "Please enter paper title"
        },
        authors: {
            required: "Please enter authors"
        },
        papers: {
            required: "Please select your paper",
            extension: "Unsupported file type"
        },
        categoryid: {
            required: "Please select category"
        },
        eventid: {
            required: "Please select colloqium"
        }
    },
    submitHandler: submitForm
}); 

function submitForm()
{
    var data = $("#upload-form").serialize();

    $.ajax({
        type: 'POST',
        url: 'submitpaper.php',
        data: data,
        beforeSend: function() {    
            $("#error").fadeOut();
            $("#btn-submit").html('<span class="glyphicon glyphicon-transfer"></span> &nbsp; sending ...');
        },
        success: function (data) {
            if(data === 1)
            {
                $("#error").fadeIn(1000, function() {
                    $("#error").html('<div class="alert alert-danger"> <span class="glyphicon glyphicon-info-sign"></span> &nbsp; Sorry! Your paper already exist in the database !</div>');
                    $("#btn-submit").html('<span class="glyphicon glyphicon-log-in"></span> &nbsp; Submit Paper');
                }); 
            }
            else if(data === "registered")
            {
                $('#upload-form').each(function(){
                    this.reset();
                });
                $('#error').html('<div class="alert alert-success"><span class="glyphicon glyphicon-info-sign"></span> &nbsp; Success! Sucessfully registered !</div>');
                $("#error").show().delay(10000).fadeOut();
                $("#btn-submit").html('<span class="glyphicon glyphicon-log-in"></span> &nbsp; Submit Paper');  
            }
            else
            {
                $("#error").fadeIn(1000, function() {
                    $("#error").html('<div class="alert alert-danger"><span class="glyphicon glyphicon-info-sign"></span> &nbsp; Sorry! Unable to submit your paper !</div>');
                    $("#btn-submit").html('<span class="glyphicon glyphicon-log-in"></span> &nbsp; Submit Paper');
                }); 
            }
        }
    }); // close ajax
    return false;
} //end submit form
});
//JavaScript文档
$('document').ready(函数()
{ 
$(“#上传表单”)。验证({
规则:{
书名:{
必填项:true
},
作者:{
必填项:true
},
论文:{
要求:正确,
扩展名:“doc | docx | pdf | doc | docx | pdf”
},
类别ID:{
必填项:true
},
事件ID:{
必填项:true
}
},
信息:{
书名:{
必填:“请输入论文标题”
},
作者:{
必填:“请输入作者”
},
论文:{
必填:“请选择您的论文”,
扩展名:“不支持的文件类型”
},
类别ID:{
必填:“请选择类别”
},
事件ID:{
必填:“请选择座谈会”
}
},
submitForm
}); 
函数submitForm()
{
var data=$(“#上传表单”).serialize();
$.ajax({
键入:“POST”,
url:'submitpper.php',
数据:数据,
beforeSend:function(){
$(“#错误”).fadeOut();
$(“#btn submit”).html('sending…');
},
成功:功能(数据){
如果(数据===1)
{
$(“#错误”).fadeIn(1000,函数(){
$(“#error”).html('Sorry!数据库中已存在您的论文!');
$(“#btn submit”).html('submit Paper');
}); 
}
否则如果(数据==“已注册”)
{
$(“#上传表单”)。每个(函数(){
这是reset();
});
$('#error').html('Success!successfully registered!');
$(“#错误”).show().delay(10000).fadeOut();
$(“#btn submit”).html('submit Paper');
}
其他的
{
$(“#错误”).fadeIn(1000,函数(){
$(“#error”).html('Sorry!无法提交论文!');
$(“#btn submit”).html('submit Paper');
}); 
}
}
});//关闭ajax
返回false;
}//结束提交表单
});
这是我的submitpper.php

<?php
include("../../config/dbconn.php");
include("../../config/lib.php");

if($_POST)
{
$userid = $_POST['userid'];
$papertitle = $_POST['papertitle'];
$authors = $_POST['authors'];
$categoryid = $_POST['categoryid'];
$eventid = $_POST['eventid'];
$submitted = date("Y-m-d H:i:s");
$statusid = 1; //1-submitted (default), 2-reviewing, 3-accepted, 4-rejected

$uploadpath = "/Applications/MAMP/htdocs/kolokium/files/";  
$filename = pathinfo($_FILES['papers']['name'], PATHINFO_FILENAME); 
$fileext = strtolower(pathinfo($_FILES['papers']['name'], PATHINFO_EXTENSION));
$RandNumber = rand(0, 9999999999); 

$allowedext = array("doc", "docx", "pdf", "DOC", "DOCX", "PDF");

$newfilename = $filename . '_' . $RandNumber . "." . $fileext;

if(findDuplicatePaperTitle($papertitle, $conn) === true)
{
    echo 1; //duplicate paper title
}
else
{
    if(move_uploaded_file($_FILES['papers']["tmp_name"], $uploadpath . $newfilename) === true)
    {
        //savenewpaper($userid, $papertitle, $authors, $NewFileName, $categoryid, $eventid, $submitted, $statusid); 
        $sql = "INSERT INTO papers (papertitle, paperauthors, categoryid, eventid, statusid, 
        papersubmitteddate, author_userid, paperfilename) VALUES (:papertitle, :authors, :categoryid,
        :eventid, :statusid, :submitted, :userid, :paperfilename)"; 
        $stmt = $conn->prepare($sql);
        $stmt->bindParam(':papertitle', $papertitle);
        $stmt->bindParam(':authors', $authors);
        $stmt->bindParam(':paperfilename', $newfilename);
        $stmt->bindParam(':categoryid', $categoryid);
        $stmt->bindParam(':eventid', $eventid);
        $stmt->bindParam(':statusid', $statusid);
        $stmt->bindParam(':submitted', $submitted);
        $stmt->bindParam(':userid', $userid);
        $stmt->execute();

        echo "registered";
    }
    else
        echo "failed to upload";
}
}
?>

你需要为此使用formdata。受最新浏览器支持,这可能会对您有所帮助

只要换上你的

var data = $("#upload-form").serialize();

并将这些添加到ajax中

contentType : false
processData : false
下面是一个简单的示例,您可以使用:

uploadscript.js

function submitForm()
{
    var data = new FormData( $("#upload-form")[0] );

    $.ajax({
        type: 'POST',
        url: 'submitpaper.php',
        data: data,
        contentType : false,
        processData : false,
        beforeSend: function() {    

        },
        success: function (data) {
            alert(data);
        }
    }); // close ajax

} //end submit form
submitpper.php

<?php
    var_dump($_FILES['papers']);
?>
<script src="jquery.min.js"></script>  
<script src="uploadscript.js"></script>
<script>
    $(function(){
        $('form').submit(function(e){
            e.preventDefault();
            submitForm();
        });
    });
</script>
<!-- html form -->
<form class="form-signin" method="post" id="upload-form" enctype="multipart/form-data">
    <div class="form-group">
        <input type="file" name="papers" id="papers" placeholder="File Name" class="form-control" style="width:300px">
    </div>
    <button type="submit">Upload</button>
</form>

newsubmission.php

<?php
    var_dump($_FILES['papers']);
?>
<script src="jquery.min.js"></script>  
<script src="uploadscript.js"></script>
<script>
    $(function(){
        $('form').submit(function(e){
            e.preventDefault();
            submitForm();
        });
    });
</script>
<!-- html form -->
<form class="form-signin" method="post" id="upload-form" enctype="multipart/form-data">
    <div class="form-group">
        <input type="file" name="papers" id="papers" placeholder="File Name" class="form-control" style="width:300px">
    </div>
    <button type="submit">Upload</button>
</form>

$(函数(){
$('form')。提交(函数(e){
e、 预防默认值();
submitForm();
});
});
上传

美元(“#上传表单”)在哪里?我有那一行。不要把所有的行都包括进去。我觉得代码太多了。只是我无法使用jquery上传文件。但是,当我删除jquery并只使用100%php时,文件就可以上传了。您能将ajax成功返回的数据粘贴到这里吗<代码>成功:函数(数据){console.log(数据);…代码不返回任何内容。它应该是“1”或“已注册”。尝试在
中添加
echo
,否则
if(移动上传的文件($文件['papers'][“tmp\u名称],$uploadpath.$newfilename)==true)
@user2076320,这是否回答了您的问题/问题?如果回答了,请将此帖子标记为答案。谢谢。