我想发送一个用 javascript 构造的数组,其中包含多项选择的选定值。有没有办法使用 ajax 将此数组发送到 php 脚本?
6 回答
您可以使用 jQuery 的 $.post 方法来做到这一点(例如):
var myJavascriptArray = new Array('jj', 'kk', 'oo');
$.post('urltocallinajax', {'myphpvariable[]': myJavascriptArray }, function(data){
// do something with received data!
});
PHP 将收到一个名为myphpvariable的数组,它将包含 myJavascriptArray 值。
是那个吗 ?
您可以使用 XML 或 JSON 回发到您的服务器。您的 javascript 必须构建帖子,在 XML 的情况下需要您在 javascript 中创建它。JSON 不仅轻量级,而且更容易用 javascript 制作。查看JSON-PHP以解析 JSON。
您可能想看看在 PHP 中创建 JSON 数据
IIRC,如果 PHP 看到一个看起来像 的查询字符串http://blah.com/test.php?var[]=foo&var[]=bar&var[]=baz
,它会自动创建一个名为的数组$var
,其中包含 foo、bar 和 baz。我认为您甚至可以在查询字符串的方括号中指定数组索引,它会将值粘贴在该索引中。您可能需要对括号进行 URL 编码...使用此功能的通常方式是创建一个名为“var[]”的 HTML 输入字段,因此只需执行浏览器通常在那里执行的任何操作。PHP 文档中有一个关于通过请求的数组变量的部分。
您可能正在寻找一种对数据进行序列化(jQuery 版本)的方法。
jQuery 1.4更新为使用 PHP 语法发送数组。您可以使用以下方法将其切换为旧样式:
这是语法:
jQuery.ajaxSetting.traditional = true;
这是示例
$.ajax({
traditional: true,
type: "post",
url: myURL,
dataType: "text",
data: dataToSend, //this will be an array eg.
success: function(request) {
$('#results').html(request);
} // End success
}); // End ajax method
您可以按照 Meador 的建议创建一个数组并发送它:(以下代码是 Mootooled,但在其他库/普通旧 JS 中类似)
myArray.each(function(item, index) myObject.set('arrayItems['+index+']', item);
myAjax.send(myObject.toQueryString());
这将向 php 发送一个名为 arrayItems 的数组,可以通过 $_POST['arrayItems'] 访问该数组
echo $_POST['arrayItems'] ;
会回显类似:array=>{[0]=>'first thing', [1]=> second thing}