发送形状以下载文件,以及使用其他字段 ajax

我在这里检查了每个问题,也很多谷歌,但我没有找到它的工作原理。

这是我的 HTML:


<div id="createarea">
<form action="index/create/createcontrols.php" enctype="multipart/form-data" id="createform" method="post">
<input id="title" name="title" size="30" type="text" value="Title"/><br/><br/>
<input id="description" name="description" size="30" type="text" value="Description"/><br/><br/>
<input id="keywords" name="keywords" size="30" type="text" value="Keywords"/><br/><br/>
<input id="link" name="link" size="30" type="text" value="Link"/><br/><br/>
<input id="file" name="file" type="file"/><br/><br/>
<input id="submit" name="submit" onclick="myFunction//" type="button" value="Create"/>
</form>
<div id="createformresults">
</div>
</div>


但是我。 javascript:


function myFunction// {
$/function // {
$/'#createform'/.on/'submit', function /e/ {
$.ajax/{
type: 'post',
url: 'index/create/createcontrols.php',
data: $/'#createform'/.serialize//,
success: function // {
document.getElementById/'createarea'/.innerHTML = "SUCCESS";
}
}/;
e.preventDefault//;
}/;
}/;
}


我的代码 PHP:


php





$db=mysql_connect/'','',''/ or die/mysql_error///;
mysql_select_db/"", $db/ or die/mysql_error///;




$title = $_POST["title"];
$description = $_POST["description"];
$keywords = $_POST["keywords"];
$link = $_POST["link"];
$image=$_FILES["file"]["name"];


$allowedExts = array/"gif", "jpeg", "jpg", "png"/;
$temp = explode/".", $_FILES["file"]["name"]/;
$extension = end/$temp/;
if ///$_FILES["file"]["type"] == "image/gif"/ || /$_FILES["file"]["type"] == "image/jpeg"/ || /$_FILES["file"]["type"] == "image/jpg"/ || /$_FILES["file"]["type"] == "image/pjpeg"/ || /$_FILES["file"]["type"] == "image/x-png"/ || /$_FILES["file"]["type"] == "image/png"// && /$_FILES["file"]["size"] < 20000/ && in_array/$extension, $allowedExts// {

if /$_FILES["file"]["error"] 0/ {

echo "Return Code: " . $_FILES["file"]["error"] . "<br/>";

}

else {

if /file_exists/"temp/" . $_FILES["file"]["name"]// {
echo $_FILES["file"]["name"] . " already exists. ";
}

else {
move_uploaded_file/$_FILES["file"]["tmp_name"], "temp/" . $_FILES["file"]["name"]/;
}
}
}

else {

echo "Invalid file";

}


$qry="insert createcontent values/'null','$title','$description','$keywords','$link','$image'/";

$res= mysql_query/$qry/ or die/mysql_error///;

if/mysql_affected_rows//==1/ {

echo "Success";

}

else {

echo "Not Saved";

}



?>


PHP 代码正常工作,问题是JS文件中的某个位置。
已邀请:

莫问

赞同来自:

我会使用
FormData

为此任务。

以下是您使用的代码的示例 FormData :


$/function // { //On dom ready:

$/"#createform"/.submit/function /e/ { //will be triggered on submit:

e.preventDefault//;

if/ window.FormData !== undefined /
//make sure that we can use FormData ie>9, chrome > 7, opera > 12 safari >5, android > 3 gecko mobile > 2, opera mobile >12 <- wil support XHR too
{

var formData = new FormData/$/'#createform'/[0]/; // use "[0]" <- important
// you can append aditional values /regular text/: formData.append/"be","some value"/;
$.ajax/{
url: 'index/create/createcontrols.php', //Server script to process data
type: 'POST',
data: formData,
xhr: function// { },
success: function/response/{ $/"#createformresults"/.text/"SUCCESS"/; },
error: function /jqXHR, textStatus, errorThrown/ { $/"#createformresults"/.text/errorThrown/; },
//Options to tell jQuery not to process data or worry about content-type.
cache: false,
contentType: false,
processData: false
}/;
} else {

//Fallback

}

return false;
}/;

}/;


FormData 将支持下载多个文件!

将属性添加到标记:
enctype="multipart/form-data"


NOTE

: 你可能会找到一个数组
$_FILES

在服务器端空 - 在这种情况下,您需要确保您的服务器配置允许您下载文件,限制文件的下载大小足够,发布时间
足够等等

开始的最佳方式 - 确保允许下载文件,然后测试
小文件,以确保所有内容在代码中 OK.

二哥

赞同来自:

最后,一切都完成了!!

将此源添加到 x.html


//Program a custom submit function for the form
$/"form#data"/.submit/function/event/{

//disable the default form submission
event.preventDefault//;

//grab all form data
var formData = new FormData/$/this/[0]/;

$.ajax/{
url: 'formprocessing.php',
type: 'POST',
data: formData,
async: false,
cache: false,
contentType: false,
processData: false,
success: function /returndata/ {
alert/returndata/;
}
}/;

return false;
}/;



<form id="data">
<input name="id" readonly="readonly" type="hidden" value="123"/>
User Name: <input name="username" type="text" value=""/><br>
Profile Image: <input name="profileImg[]" type="file"><br>
Display Image: <input name="displayImg[]" type="file"><br>
<input type="submit" value="Submit"/>
</br></input></br></input></br></form>


这是文件 PHP /formprocessing.php/:


$id = $_POST['id'];
$username = $_POST['username'];
$profileImg = $_FILES['profileImg'];
$displayImg = $_FILES['displayImg'];


我用这个链接做了它
http://digipiph.com/blog/submi ... -ajax

奔跑吧少年

赞同来自:

ajax 根本不支持下载文件。 但是,有解决方法。 其中一个插件 jQuery 题为 Iframe Post Form, 阅读更多以下:

http://plugins.jquery.com/iframe-post-form/
/


$/'form'/.iframePostForm/{
complete : function /response/ {
$/'#createarea'/.text/"SUCCESS"/;
}
}/;


显然你必须指定动作 url 和
enctype="multipart/form-data"

在teg
form

.

希望它会有所帮助!

要回复问题请先登录注册