Ajax数组只返回1个值?

时间:2015-02-26 18:15:01

标签: javascript php jquery arrays ajax

我是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 = [],但我得到一个未定义的索引。

感谢您的帮助!对不起这样的菜鸟问题。

3 个答案:

答案 0 :(得分:1)

你需要解决一些问题:

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);

答案 1 :(得分:0)

您正在传递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);
      }
   });
}

答案 2 :(得分:0)

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

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

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