【问题标题】:How to use AJAX to send an array to a PHP file so it can be added to a mySQL?如何使用 AJAX 将数组发送到 PHP 文件以便可以将其添加到 mySQL?
【发布时间】:2014-11-05 04:25:23
【问题描述】:

我正在调用发送数组函数,我希望创建数组并将其发送到我的 PHP 文件。我希望 PHP 提取数据并将值输入到 mySQL 数据库的列中。

function sendArray(){

             var name = "John";
             var address = "UK"


             var sendInfo = {
                 Name: name,
                 Address: address,

                };


                $.ajax({
                       url: "http://server/~name/folder/insertOffer.php",
                       type: "POST",
                       dataType: "json",
                       data: {data: sendInfo},

                       })
                       .done(function(msg) {
                             if (msg) {
                             alert("Somebody" + name + " was added in list !");
                             location.reload(true);
                             } else {
                             alert("Cannot add to list !");
                             }
                             });

}

<?php

include("mysqlconnect.php");

$sendInfo = file_get_contents('php://input');

$data = [];

$Name = $_POST['data']['name'];
$Address = $_POST['data']['Address'];


mysqli_query($con,"INSERT INTO offerSelected (Id, Url)
VALUES ('$name', '$address')");

?>

【问题讨论】:

  • 您遇到的错误是什么

标签: php mysql arrays ajax cordova


【解决方案1】:

你的 JS 有一个问题:

var sendInfo = {
    Name: name,
    Address: address,
};

尾随逗号可能会导致某些浏览器出现问题。去掉address后面的逗号。

发出 HTTP 请求时,您可以:

  • 发送 JSON
  • 发送表单编码数据

(还有其他选项,但这些是与您正在使用的代码相关的选项)

您的 JavaScript 正在发送表单编码的数据,但您的 PHP 正在尝试对两者进行奇怪的混合。

$sendInfo = file_get_contents('php://input');

删除上面的行。您正在发送表单编码数据。您不需要获取用于手动解析的原始输入。 PHP 会自动解析表单编码数据并放入$_POST

$data = [];

删除上面的行。你从不使用$data

$Name = $_POST['data']['name'];

您在 JavaScript 中调用了属性 Name,而不是 name。始终如一。将其更改为:

$Name = $_POST['data']['Name'];

然后:

$Address = $_POST['data']['Address'];

这本身应该可以正常工作(鉴于您拥有的 JavaScript)。

mysqli_query($con,"INSERT INTO offerSelected (Id, Url) VALUES ('$name', '$address')");

您将变量称为 $Name$Address。不要在程序中间将它们更改为$name$address

但是,请注意,一旦你解决了这个问题,你仍然容易受到SQL injection attacks的影响,你需要自己去defend

【讨论】:

  • 我觉得我的 JavaScript 没有正确激活我的警报(“某人”+ 名称+“已添加到列表中!”)永远不会起作用。我在科尔多瓦应用程序中运行这个脚本,所以我很难查看错误。但是,该函数被正确调用。
  • @MichaelO'Neill — 然后你需要学习如何更好地使用 cordova 的调试工具来弄清楚实际发生了什么。
  • 我发现你的代码有六个问题,但没有其他人发现我。
猜你喜欢
  • 2014-11-05
  • 2014-12-19
  • 1970-01-01
  • 2013-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-21
相关资源
最近更新 更多