Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用AJAX将数组发送到PHP文件,以便将其添加到mySQL?_Php_Mysql_Arrays_Ajax_Cordova - Fatal编程技术网

如何使用AJAX将数组发送到PHP文件,以便将其添加到mySQL?

如何使用AJAX将数组发送到PHP文件,以便将其添加到mySQL?,php,mysql,arrays,ajax,cordova,Php,Mysql,Arrays,Ajax,Cordova,我正在调用SendArray函数,我希望创建一个数组并将其发送到我的PHP文件中。我希望PHP提取数据并将值输入mySQL数据库的列中 function sendArray(){ var name = "John"; var address = "UK" var sendInfo = { Name: name, Address: address,

我正在调用SendArray函数,我希望创建一个数组并将其发送到我的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')");

?>
函数sendArray(){ var name=“John”; var address=“英国” var sendInfo={ 姓名:姓名,, 地址:地址:, }; $.ajax({ url:“http://server/~name/folder/insertOffer.php“, 类型:“POST”, 数据类型:“json”, 数据:{data:sendInfo}, }) .done(函数(msg){ 如果(味精){ 警报(“列表中添加了某人”+姓名+); 位置。重新加载(true); }否则{ 警报(“无法添加到列表!”); } }); }
您的JS有一个问题:

var sendInfo = {
    Name: name,
    Address: address,
};
在某些浏览器中,尾随逗号可能会导致问题。从
地址
后删除逗号

发出HTTP请求时,您可以:

  • 发送JSON或
  • 发送表单编码数据
(还有其他选项,但这些选项与您正在使用的代码相关)

您的JavaScript正在发送表单编码的数据,但您的PHP正在尝试执行一种奇怪的混合解析

$sendInfo = file_get_contents('php://input');
拆下上面的线。您正在发送表单编码数据。手动解析不需要获取原始输入。PHP将自动解析表单编码数据并将其放入
$\u POST

$data = [];
拆下上面的线。您从不使用
$data

$Name = $_POST['data']['name'];
您在JavaScript中调用了属性
Name
,而不是
Name
。保持一致。改为:

$Name = $_POST['data']['Name'];
然后:

这本身应该可以很好地工作(考虑到您拥有的JavaScript)

您调用了变量
$Name
$Address
。不要将它们更改为<代码> $No.<代码>和<代码> $地址<代码>在程序的中间。
但是,请注意,一旦您解决了这个问题,您仍然容易受到需要保护自己的的攻击

您得到的错误是什么我觉得我的javaScript没有正确激活我的警报(“某人”+name+“已添加到列表中!”)从未运行过。我正在cordova应用程序中运行此脚本,因此很难查看错误。不过,函数的调用是正确的。@MichaelO'Neill-然后你需要学习如何更好地使用cordova的调试工具,以了解实际发生的情况。我发现你的代码有六个问题,没有其他人向我发问。
$Address = $_POST['data']['Address'];
mysqli_query($con,"INSERT INTO offerSelected (Id, Url) VALUES ('$name', '$address')");