Php 如何在Javascript中使用自定义索引连接数组项?
我有一个javascript数组,需要加入并通过URL发送到PHP,如下所示:Php 如何在Javascript中使用自定义索引连接数组项?,php,javascript,arrays,join,Php,Javascript,Arrays,Join,我有一个javascript数组,需要加入并通过URL发送到PHP,如下所示: var objects = []; objects.splice("red",0,"apple"); objects.splice("yellow",0,"banana"); objects.splice("purple",0,"grape"); var string = objects.join("+"); $("#print_div").load("fruits.php?fruits=" + string)
var objects = [];
objects.splice("red",0,"apple");
objects.splice("yellow",0,"banana");
objects.splice("purple",0,"grape");
var string = objects.join("+");
$("#print_div").load("fruits.php?fruits=" + string);
在PHP中,我想接收字符串并将其转换回数组。。。大概是这样的:
$fruits = explode(" ", $_REQUEST['fruits']);
foreach($fruits as $key => $value){
echo "The " . $value . " is " . $key;
}
可能是javascript中的连接或拼接无法实现这一点,也可能是php中的爆炸。我不确定,但我需要一个解决方案,能够在javascript中为数组创建自定义索引,然后发送到php,并且仍然能够访问索引和值名称
谢谢你的帮助 如果您在javascript中使用
对象。join(“+”
,那么您应该在PHP中使用explode(“+”,$\u REQUEST['fruits'])
,尝试使用push()
将元素添加到数组中。您可能需要查看哪些元素接受GET字符串并将其解析到数组中,键入和所有内容。您使用的splice
错误。检查一下。
您可以像下面这样将数据传递给方法,这非常简单
var data = {
"red": "apple",
"yellow": "banana",
"purple": "grape"
};
$("#print_div").load("fruits.php", data);
在php中:
foreach($_GET as $key => $value){
echo "The " . $value . " is " . $key;
}
假设这是您的对象:
var fruits = {
red: "apple",
yellow: "banana",
purple: "grape"
};
像这样将其传递给php:()
像这样使用它:
$fruits = $_REQUEST['fruits'];
foreach($fruits as $key => $value){
echo "The " . $value . " is " . $key;
}
即使您没有更改原始代码中的其他内容,这一行
$("#print_div").load("fruits.php?fruits=string");
应该是
$("#print_div").load("fruits.php?fruits="+string);
因此,
objects.splice(“红色”,0,“苹果”)的结果代码>到底是什么?数组仅适用于数字标记。如果需要字符串标记,则必须使用对象(可能与数组一起使用,以保持顺序)并实现自己的splice
和join
方法。在url中传递内容时要小心-它们有长度限制,超过这些限制将自动截断url,导致数据丢失/损坏。javascript(和大多数语言)不允许自定义索引。这实际上是不正确的!请尝试发送带有空格的字符串。空格总是转换为“+”,但PHP仍会将它们识别为空白。@Amberlamps请解释then@Amberlamps这是真的,但是如果你加入一个带有+的数组,它将不会在phphone中转换回空白。我已经有一段时间没有使用过PHP了,但据我所知,当你调用像script.PHP?string=this+is+a+test
和prom这样的脚本时在PHP脚本中没有进一步处理请求参数,它不是在没有“+”s的情况下编写“这是一个测试”吗?@slash197 PHP将“+”转换为空白,这就是为什么我有explode(“,$\u请求['fruits'))
。我已经运行了它,并且它的工作没有任何问题。我认为我的问题是javascript不允许数组具有字符串索引,因此连接忽略自定义索引,PHP将在explode时分配数字索引。如果加载时要传递多个参数,这会起作用吗?@amlane86是的,没有限制。不需要json_解码sary,load方法会将数据转换为参数。谢谢!这是一个输入错误。现已修复。
$("#print_div").load("fruits.php?fruits="+string);