Javascript Ajax不会将数据发送到PHP

Javascript Ajax不会将数据发送到PHP,javascript,php,jquery,mysql,ajax,Javascript,Php,Jquery,Mysql,Ajax,已解决:这里发布的代码是正确的,但是连接到数据库的一些PHP代码需要修复,我现在已经可以使用了。我在评论中使用了昆汀的建议来解决我的问题 我试图通过ajax将数组的JSON发送到PHP文件,然后运行PHP文件。这是我的ajax: $('#submit').click(function() { $.ajax({ method: "POST", url: "submit.php", data: {selectedImageArray: selectedImageA

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

我试图通过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代码没有运行。为什么这不起作用


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

您可以添加内容类型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'];

你需要访问e。g$_直接发布['key1'.

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

$sql->bindParam(':itemlist', json_encode($array));
当您获得数据时,只需运行:

$array = json_decode($itemlist);

$streamprofile['streamid']来自哪里?删除include我以前从未在JavaScript中见过include。。。不管怎样,这在哪里具体失败了?调试PHP代码时,会发生什么情况?@SulthanAllaudeen,为什么他们需要使请求同步?这里不需要它,它会锁定用户界面直到完成。@SulthanAllaudeen,即使数据是图像数据,也需要数据是FormData对象,使请求同步不会影响它。你怎么知道PHP代码没有运行?那到底是什么意思?开发人员工具的“网络”选项卡是否不显示正在发出的请求?它会超时而不是得到响应吗?它是否得到响应但显示PHP源代码?if语句的错误分支运行了吗?设置数据类型只会影响服务器响应的处理方式,不会影响php代码的运行方式。我们看不到服务器响应是什么,所以我们不知道它是否为JSON。客户端代码只将其视为文本。contentType:application/json完全错误-数据的值不是json,服务器端代码从$\u POST读取,因此服务器不需要json。我将contentType设置为json@AnilTalla-这意味着你没有撒谎,但它仍然不起作用,因为$U POST['selectedImageArray']不会被填充,因为PHP不会以这种方式处理JSON格式的HTTP请求。由于服务器端代码使用$\u POST,您仍然在添加一个额外的错误,而不是解决问题。您将向它发送JSON。-这不是真的。jQuery将生成表单编码数据,并在给定问题中的语法时填充$\u POST。这就是这是一个可怕的问题解决方案。关系数据库之所以伟大,是因为它们可以处理关系。如果这是一个因为OP尚未正确定义问题而不清楚的问题,那么解决方案是使用外键设置一个表,然后在循环中插入值。只有当OP需要使用查询时,您的解决方案才更好o获取关系数据,如果他需要获取每个id的所有数据,那么这种方式会更快。这是一种错误的经济。非规范化数据在6个月后不可避免地会成为一个问题。@Quentin所以你认为我不应该将数据编码成JSON?如果我这样做,会节省一些空间。@Macerier你似乎是对的。使用$array只会添加一个单词Ar将其转换为Json将保存实际数组。