繁体   English   中英

Ajax 不会向 PHP 发送数据

[英]Ajax won't send data to PHP

已解决:此处发布的代码是正确的,但是连接到数据库的某些 PHP 代码需要修复,我现在可以使用了。 我在评论中使用了Quentin的建议来解决我的问题。

我正在尝试通过 ajax 将数组的 JSON 发送到 PHP 文件,然后运行 ​​php 文件。 这是我的ajax:

    $('#submit').click(function() {
  $.ajax({
    method: "POST",
    url: "submit.php",
    data: {selectedImageArray: selectedImageArray}
  }).done(function( msg ) {
    alert( "Data Saved: " + selectedImageArray );

  });
});

在我的 PHP 文件中,我连接到一个数据库然后有这个:

$array = $_POST['selectedImageArray'];
    $sql = $dbh->prepare("INSERT INTO pending_trades (steam_id, trade_items, is_giving, is_receiving, has_started) VALUES (:steamid, :itemlist, '1', '0', '0')");
    $sql->bindParam(':steamid', $steamprofile['steamid']);
    $sql->bindParam(':itemlist', $array);

    $sql->execute();

我希望这将“selectedImageArray”json 发送到 php 并在按下此按钮时使用它运行 msql 查询:

<button id="submit" class="button1" >Submit<span></span></button>

单击按钮时,我收到“数据已保存: array data ”消息,但未运行 php 代码。 为什么这不起作用?

编辑:我设置了data: {selectedImageArray: selectedImageArray}而不是data: selectedImageArray因为我被告知它变成了 JSON 格式,对吗?

您正在数据库中添加一个数组而不是字符串尝试使用:

$sql->bindParam(':itemlist', json_encode($array));

当您获取数据时,只需运行:

$array = json_decode($itemlist);

您可以添加内容类型 JSON。 否则,它将被视为文本。

var data = JSON.stringify({selectedImageArray: selectedImageArray});
 $.ajax({
method: "POST",
dataType: 'json', // If your response is JSON
contentType: "application/json",
url: "submit.php",
data: data
}).done(function( msg ) {
alert( "Data Saved: " + selectedImageArray );
include ('submit.php');
});

首先看看你的浏览器调试器真正发送到 php 文件的内容。 第二件事:您将向它发送 JSON。 这意味着,您有一个像这样的 POST 表单数组:

[{
   "key1": "value1",
   "key2": "value2"
}]

所以,总而言之,这不起作用:

$array = $_POST['selectedImageArray'];

您需要直接访问例如$_POST['key1']

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM