gpt4 book ai didi

php - 使用 ajax 向我的服务器发送了一个对象,似乎无法使用 php 获取数据

转载 作者:行者123 更新时间:2023-11-29 02:56:56 24 4
gpt4 key购买 nike

我已经使用这段 AJAX 向我的 PHP 发送了两条数据:

function ajax_post(){
// Create our XMLHttpRequest object
var request = new XMLHttpRequest();
// Create some variables we need to send to our PHP file
var url = "php/addUser.php";
var username = document.getElementById("newUserName").value;
var password = document.getElementById("newUserPass").value;
var newUsername = "user_name="+username;
var newPassword="password="+password;
request.open("POST", url, true);
// Set content type header information for sending url encoded variables in the request
request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
// Access the onreadystatechange event for the XMLHttpRequest object
request.onreadystatechange = function() {
if(request.readyState == 4 && request.status == 200) {
var return_data = request.responseText;
document.getElementById("output").innerHTML = return_data;
}
};
// Send the data to PHP now... and wait for response to update the status div
request.send({newUsername,newPassword}); // Actually execute the request

这是应该获取这两条数据并将其插入我的 mysql 数据库的 PHP 代码。

//Connect to the database

$connection = mysqli_connect($host, $user, $pass, $db, $port)or die(mysql_error());

$userName=$_POST['newUsername'];
$userPassword=$_POST['newPassword'];

$query="INSERT INTO users(user_name,password)
VALUES('$userName','$userPassword')";

if ($connection->query($query) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $query . "<br>" . $connection->error;
}

$connection->close();

当 AJAX 运行时,它运行时没有错误,并将数据发送到我服务器上的 PHP 代码。然后 PHP 代码运行并没有错误地完成,但是当我检查我的数据库时,新用户被插入到数据库中,但它是空的。我很确定它在我的 PHP 代码中,但我还没有弄明白。

最佳答案

request.send() 的参数应该是一个 URL 编码的字符串,而不是一个对象。

request.send(newUsername + '&' + newPassword);

请注意,在设置变量时还应使用 encodeURIComponent,以防它们包含特殊的 URL 字符。

var newUsername = "user_name=" + encodeURIComponent(username);
var newPassword = "password=" + encodeURIComponent(password);

此外,您的对象语法不正确。对象的语法是

{ prop1: value1, prop2: value2, ... }

{ var1, var2 } 应该给你一个语法错误。

您还使用了错误的 $_POST 键。键应该匹配 = 之前的参数名称,而不是表单字段的 ID。

$userName = $_POST['user_name'];
$userPassword = $_POST['password'];

您还应该在 PHP 中使用准备好的语句而不是变量替换,以防止 SQL 注入(inject)问题。

$query = "INSERT INTO users (user_name, password) VALUES (?, ?)";
$stmt = $connection->prepare("ss", $userName, $userPassword);
if ($stmt->execute()) {
echo "New record created successfully";
} else {
echo "Error: " . $query . "<br>" . $stmt->error;
}
$connection->close();

关于php - 使用 ajax 向我的服务器发送了一个对象,似乎无法使用 php 获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29807575/

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