gpt4 book ai didi

javascript - 无法接收使用 ajax 发布的 js 数组

转载 作者:行者123 更新时间:2023-11-28 02:48:12 25 4
gpt4 key购买 nike

我正在尝试将表单数据和 js 数组发送到 mysql 数据库。我在将 js 数组接收到我的 php 时遇到问题。我从表单接收数据而不是数组。我找不到问题。

索引.php

<!doctype html>
<html lang="en">
<head>
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"><!--bootstrap-->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script><!--jquery-->
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script><!--angular js-->
<script type="text/javascript" src="assets/js/main.js"></script>

</head>
<body>
<form method="post" action="upload.php">
<!--dynamic form created from javascript-->
<input id="submit" type="submit" value="Upload" name="submit" onclick="upload()"/>
</form>
</body>
</html>

javascript -- main.js

var objArray = []; //Array of questions

function upload(){
var jsonArray = JSON.stringify(objArray);

$.ajax({
type:'post',
url: 'upload.php',
data: { jsonData : jsonArray},
success: function(data){
console.log("success!");
}
});

} else {
console.log("no data javascript!");
}
}

上传.php

<?php

if(($_SERVER['REQUEST_METHOD'] == "POST") && (isset($_POST['submit']))){

$servername = "......";
$username = "......";
$password = "......";
$dbname = ".....";

// Create connection
$conn = new mysqli($servername, $username, $password,$dbname);

// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}

if(!empty($_POST['jsonData'])){
$json = $_POST['jsonData'];
var_dump(json_decode($json, true));
echo "<script type=\"text/javascript\">
console.log('received data');
</script>";
} else {
echo "data not received";
}

$conn->close();

}else {echo "unsecure connection";}
?>

objArray 看起来像这样:

[{"questionId":1,"questionTypeObj":"single","options":3},{"questionId":2,"questionTypeObj":"single","options":3}]

upload.php 输出“未收到数据”

最佳答案

您的输出表明问题所在:您到达了回显 data not received 但您没有发送 submit 键的部分:$_POST ['submit'] 在通过 ajax 调用时未设置。

因此您是以“正常”方式而不是通过 ajax 提交表单。

这是因为您没有取消按钮的默认 submit 操作。

解决这个问题的最佳方法(在我看来......)是删除内联 javascript - 点击处理程序 - 并将你的函数替换为:

$("form").on('submit', function(e) {
// Cancel the default form submit
e.preventDefault();

// The rest of your function
var jsonArray = JSON.stringify(objArray);
...
});

请注意,我正在捕获表单提交事件。您也可以将其替换为按钮单击事件,但当访问者在表单字段中使用回车键时,这可能无法正常工作。

关于javascript - 无法接收使用 ajax 发布的 js 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40619079/

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