Ajax数组只返回1个值


Ajax array only returns 1 value?

我是PHP和Ajax的新手,所以请耐心等待。我四处搜索,找到了一些答案,但仍然遇到了问题。我有一个复选框输入值数组。如果用户选中一个项目,它就会被添加到我的数组列表中。例如:

listOfPrograms = [chrome, firefox, sqlworkbench]

我想把这个数组列表发送到服务器上的PHP脚本中。我当前的Ajax脚本如下:

function ajaxPostToPhp(listOfPorgrams)
{
  $.ajax
  ({
      url: 'script.php',
      type: 'post',
      data: ("listOfPrograms" : listOfPrograms), // I believe this is where my issues lies as I do not know exactly that this is doing. I have read the PHP documentation. I tried converting to JSON and kept getting a 500 error.
      success: function(data)
      {
         console.log(data);
      }
   });
}

我的PHP脚本如下:

$myArray = $_Request['listOfPrograms'];
echo $myArray;

这只返回数组中的1个项。我尝试设置myArray=[],但得到了一个未定义的索引。

谢谢你的帮助!很抱歉问了这么一个愚蠢的问题。

您需要修复一些问题:

1-Javascript数组:

var listOfPrograms = ['chrome', 'firefox', 'sqlworkbench'];

2-Ajax数据:

function ajaxPostToPhp(listOfPrograms)
{
  myListData = {};
  myListData['Programs'] = listOfPrograms; 
  $.ajax({
     url: 'script.php',
     type: 'post',
     data: myListData, 
  success: function(data)
  {
     console.log(data);
  }
});
}

3-Php代码:

$myArray = $_POST['Programs'];
var_dump($myArray);

array作为post参数传递,但它们只能是strings。您应该首先将数组转换为JSON字符串。一个简单的功能是JSON.stringify()

var listOfPrograms = ["chrome", "firefox", "sqlworkbench"] 
// I guess you need strings here
function ajaxPostToPhp(listOfPorgrams) {
  $.ajax ({
      url: 'script.php',
      type: 'post',
      // Convert listOfPrograms to a string first
      data: ("listOfPrograms" : JSON.stringify(listOfPrograms)),
      success: function(data) {
         console.log(data);
      }
   });
}

jquery会为您将ajax post data中的数组值转换为数组。问题是,在php中,不能只回显一个数组。正如一位评论者所说,您的php文件需要看起来像

$myArray = $_Request['listOfPrograms']; 
echo json_encode($myArray);

您还应该考虑使用$_POST而不是$_REQUEST