这就是我将我的php数组转换为javascript的方式
echo 'var daysofweek = '.json_encode($daysofweek).';';
现在我知道json_decode可以做相反的事情,但问题是我不知道这样做的语法。
我试过了:
<script>
var array_days = new Array();
array_days[] = "psdfo";
array_days[] = "bsdf";
<?php
$array_days = json_decode(?>array_days<?php);?>
</script>
是的,我一无所知。
我忘了提到我想通过post发送一个数组,包含有关javascript动态创建的所有表单值的所有信息。否则,我不知道要查找哪个名称=“”,因为它将由用户决定。除非别人有替代解决方案......
答案 0 :(得分:2)
PHP是一个预处理器,无法满足您的要求。您需要PHP引擎才能处理页面上的javascript。 json_decode用于解码PHP中的json字符串。
要做到这一点,你必须使用像Ajax之类的东西将javascript数组传递给PHP脚本,这样你的PHP脚本无论如何都可以处理它,然后将结果传回你的Javascript代码。
答案 1 :(得分:0)
是的,正如Wajiw所说,PHP是预处理器。但我认为有可能使用ajaxed请求。 将Javascript数组作为参数请求发送到另一个页面并使用php处理它,并再次显示结果。
注意:从未尝试过这个:) 感谢
答案 2 :(得分:0)
<script> var array_days = new Array(); array_days[] = "psdfo"; array_days[] = "bsdf"; <?php $array_days = json_decode(?>array_days<?php);?> </script>
我对此部分一无所知......这是javascript吗?如果是这样,您需要使用JSON解析器,如JSON2.js https://github.com/douglascrockford/JSON-js
此文件创建一个Javascript JSON对象,允许您将JSON字符串解析为Javascript对象。 (你总是可以使用eval()但它不会阻止可能的恶意代码...)或者反过来......从Javascript对象转换为JSON字符串。
转换为JSON字符串后,您只需将数据通过AJAX发送到PHP文件,如:
var data = {
key: value,
key2: value2
},
JSON = JSON.stringify(data);
$.ajax({
url: 'php_file.php',
type: 'POST',
data: JSON,
success: function(data){
alert(data)
}
});
(我正在使用jQuery来保存一些行......)
然后在php_file.php上你会有这样的东西:
<?php
$json = json_decode($_POST['data']);
foreach($json as $value){
//Do something with it!
}
?>
答案 3 :(得分:0)
首先:
array_days[] = "psdfo";
array_days[] = "bsdf";
这些行是有效的PHP,但不是有效的JavaScript。正确的等价物是:
array_days.push("psdfo");
array_days.push("bsdf");
将生成的字符串数组(这是我假设的)传递给PHP。要在纯JS中将其作为表单数据发送,我们可以在提交表单时创建隐藏的输入元素(try it):
<form id="myform" method="POST" action="http://www.cs.tut.fi/cgi-bin/run/~jkorpela/echo.cgi">
<input type="submit" value="Submit">
</form>
<script>
document.getElementById('myform').onsubmit = function() {
for(var i = 0; i < array_days.length; ++i) {
var inputElement = document.createElement('input');
inputElement.type = 'hidden';
inputElement.name = 'array_days[]';
inputElement.value = array_days[i];
this.appendChild(inputElement);
}
};
</script>
PHP会将名称为array_days[]
的每个输入解释为$_POST['array_days']
的数组元素。例如,您可以在PHP中访问$_POST['array_days'][0]
。
对于AJAX,当您将数组作为数据参数传递给$.ajax
时,jQuery 1.4及更高版本将自动实现此效果。
为什么不json_decode()
?答案是旧版本的网络浏览器不支持等同于PHP JSON.stringify()
的JavaScript函数json_encode()
,尽管有一个library to add support。人们可能会认为这是一个更复杂的案例,但对于这样一个简单的案例,它不应该是必要的。