【发布时间】:2019-09-05 05:29:00
【问题描述】:
我正在使用一个名为 register.php 的 PHP 文件在我的数据库中注册新用户,其中一些数据来自注册表单,但是,我数据库中的最后两个数据字段是两个默认的 JSON 对象.为此,我在注册按钮单击事件的 js 文件中创建变量,然后使用 JSON.stringify() 使用 AJAX/JQuery 发送它,如下所示:
除了这个 AJAX/JQuery 的东西,我还尝试使用 xmlhttp,创建一个请求并使用 open("GET", ...)、send(...) 发送数据并以相同的方式接收它在 PHP 文件上。两种方式最终都会收到空格而不是 JSON 对象。
$("#registerButton").click(function(){
cards = {"idcards": [1,4,7,10,13,16,17,19,23,27,29,35,39,41,43,46,58,77,95,120]};
cardsJSON = JSON.stringify(cards);
$.ajax({
type: 'POST',
url: 'php_includes/register.php',
data: {cards: cardsJSON},
dataType: 'json'
});
});
这是 PHP 代码:
...
$freecards = $_POST['cards'];
...
#I'm omitting the other query values to simplify this.
$query = "INSERT INTO users VALUES ('{$freecards}')";
我希望收到我在 JS 文件开头声明的相同 JSON 对象,而不是我进入数据库的空白空间。
【问题讨论】:
-
危险:你很容易受到SQL injection attacks的影响,你需要defend你自己。
-
什么是
registerButton? Ajax 请求是实际运行 PHP 的请求吗?还是被发送空白数据的表单提交取消了? -
@Quentin
registerButton是按钮的 id。运行 AJAX 的 PHP 文件称为 index.php,这是我们拥有注册表单的地方。当点击按钮registerButton时,会运行另一个PHP文件,名为register.php,我们要在其中接收卡片数据,然后我们可以将其发送到数据库。 -
在测试您的代码并生成
echo $query时,我得到INSERT INTO users VALUES ('{\"idcards\":[1,4,7,10,13,16,17,19,23,27,29,35,39,41,43,46,58,77,95,120]}')。在这里看到它:codepen.io/lipsumar/pen/qwPJJx -
@Inês — 听起来您正在提交表单,这正在取消 Ajax。
标签: php jquery json ajax xmlhttprequest