可能重复:
How to pass an array of strings from PHP to Javascript using $.ajax()?
我想将一个关联数组从php代码传递给javascript代码。请帮我。我该怎么做呢 ? JSON对此事有帮助吗?如果是,那么请提供一个简单的帮助代码。谢谢。
以下评论:
HTML + PHP代码
<td>
<input type="text" style="width:70;" name="<?php echo $quantity;?>" id="<?php echo $quantity;?>" onkeyup="check_valid_range('<?php echo $itemName;?>','<?php echo $quantity;?>',<?php echo json_encode($product_inventory);?>);">
</td>
<script type="text/javascript">
function check_valid_range(product_field, quantity_field, inventory){
var product = document.getElementById(product_field).value;
var quantity = document.getElementById(quantity_field).value;
var v = inventory[product];
alert(v);
}
</script>
答案 0 :(得分:9)
JSON非常完美:
<?php
$mySweetJSONString = json_encode($myAssocPHPArray);
?>
<script>
var iWantThePHPArrayHere = <?php echo $mySweetJSONString; ?>;
</script>
用户pst提出了这些问题:
"array("</script>") -- darn, just broke this "perfect" approach."
它似乎有效,因为(</script>
=&gt; <\/script>
):
jsFiddle
"What about ]]> which could occur in XHTML?"
该字符串可以转移。
jsFiddle
<强>更新强>
关于用JS调试问题:
控制台中有错误吗?您的document.getElementById(...)
之一可能会返回null。因此,成员value
不存在。
答案 1 :(得分:0)
我一直认为JSON是为此而发明的:
<script>
var myArray = <?=json_encode($myArray)?>;
</script>
这将呈现如下:
<script>
var myArray = {"key":"value","key2":"value2",...};
</script>
这对javascript非常安全,因为JSON是javascript语法的一个子集。这意味着任何JSON字符串都可以视为Javascript。
在<script>
标记中嵌入JSON时, PHP's json_encode()
非常安全,因为PHP会转义/
字符:
json_encode('</script>');
=> "<\/script>"
因此无法编写</script>
,这是逃避<script>
标记的唯一方法。 (<script>
标记中的所有内容都是脚本的一部分,它不会被解析为HTML。)JSON allows to escape the /
用于此目的。
因此,没有JSON字符串可以转义<script>
标记。