gpt4 book ai didi

javascript - AJAX (JavaScript/PHP),FormData 不发送

转载 作者:行者123 更新时间:2023-12-03 10:41:04 25 4
gpt4 key购买 nike

我有一个 AJAX 调用(使用 JQuery),按以下方式设置:

<script type="text/javascript">

var ajax = new XMLHttpRequest();
ajax.open("POST", "testing.php", true);

ajax.onreadystatechange = function(){
if(ajax.readyState == 4 && ajax.status == 200){
var returnVal = ajax.responseText;

if(returnVal == "upload_success"){
$('#display').html("WORKING!");
}else{
$('#display').html("NOPE");
}
}
}

</script>

我将它与以下测试 PHP 配对:

<?php

if(isset($_POST['username'])){
echo "upload_success";
exit();
}

?>

如果我通过以下方式发送AJAX数据:

ajax.send("username=1");

然后一切就完美了。 display div 的内部 HTML 设置为预期的 "WORKING!"

但是如果我以这种方式发送 AJAX:

var formData = new FormData();
formData.append("username", 1);
ajax.send(formData);

它将 HTML 设置为 “NOPE” - 表示未设置 post 变量 $_POST['username']

如何检查我的 PHP 函数是否有此特定的 AJAX 调用?我需要能够区分不同的 AJAX 调用。

我最终将向 formData 附加一个文件,但我只是先测试一下,因为我以前从未使用过它。

提前谢谢您。

编辑 1 - HTML

<?php ... PHP from above goes here ... ?>
<!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" />
<meta name="robots" content="noindex, nofollow"/>

<title>Title</title>

<link href="../CSS/styles.css" rel="stylesheet" type="text/css" />
<link href="../CSS/UI/jquery-ui.min.css" rel="stylesheet" type="text/css" />

<script type="text/javascript" src="../scripts/jquery-1.11.2.min.js"></script>
<script type="text/javascript" src="../scripts/UI/jquery-ui.min.js"></script>

<script type="text/javascript"> ... AJAX script from above goes here ... </script>
</head>

<body>

<div id="wrapper">

<form enctype="multipart/form-data" onsubmit="return false;">
<input type="file" name="fileField" id="fileField" />
<br/><br/>
<input class="button" type="submit" value="Upload"/>
</form>

<div id="display"></div>

</div> <!-- End wrapper -->
</body>
</html>

最佳答案

我认为你应该使用这种方式通过ajax使用formdata上传文件,

Javascript

$(document).ready(function(){
$('#id_of_form').on('submit',function(e){

e.preventDefault();
var formdata = new FormData($(this)[0]);
$.ajax({
url: "test.php",
type: "POST",
data: formdata,
contentType: false,
cache: false,
processData:false,
success: function(data){
console.log(data);
}
});
});

PHP(测试.php)

if(isset($_FILES)){

if(isset($_FILES["fileField"]["type"])){

$validextensions = array("jpeg", "jpg", "png","JPEG","JPG","PNG");
$temporary = explode(".", $_FILES["add-file"]["name"]);
$file_extension = end($temporary);
if ((($_FILES["add-file"]["type"] == "image/png") || ($_FILES["add-file"]["type"] == "image/jpg") || ($_FILES["add-file"]["type"] == "image/jpeg")
) && in_array($file_extension, $validextensions)) {

$sourcePath = $_FILES['add-file']['tmp_name']; // Storing source path of the file in a variable
$targetPath = "/photos/".$_FILES['add-file']['name'];
move_uploaded_file($sourcePath,$targetPath) ; // Moving Uploaded file
/* you can add this taget path to database if required here */
echo "file uploaded successfuly";
}
}

}

关于javascript - AJAX (JavaScript/PHP),FormData 不发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28778119/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com