Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript PHP/jQuery-意外标识符_Javascript_Php_Jquery - Fatal编程技术网

Javascript PHP/jQuery-意外标识符

Javascript PHP/jQuery-意外标识符,javascript,php,jquery,Javascript,Php,Jquery,我正在用PHP设置一个jQuery数组,如下所示: <script type='text/javascript'> var postQuote = new Array(); postQuote[<?php echo $post['post_id']; ?>] = <?php echo mysql_real_escape_string(html_entity_decode($post['post_text'])); ?> </

我正在用PHP设置一个jQuery数组,如下所示:

    <script type='text/javascript'>
    var postQuote = new Array();
    postQuote[<?php echo $post['post_id']; ?>] = <?php echo mysql_real_escape_string(html_entity_decode($post['post_text'])); ?>
   </script>

var postQuote=新数组();
后报价[]=
我的问题是,
$post['post_text']可以包含所有字符。因此,我在jQuery中得到了一个
意外的标识符
错误


我的问题是:如何避免这种情况?

为什么不进行
json\u编码
json_encode
将PHP变量转换为JavaScript可用的变量。这也可以消除在大多数情况下使用
html\u entity\u decode
的需要,因为这并不是转换JavaScript将使用的内容时应该做的事情<代码>mysql\u real\u escape\u字符串
根本不需要

<script type='text/javascript'>
    var postQuote = new Array();
    postQuote[<?php echo json_encode($post['post_id']); ?>] = <?php echo json_encode($post['post_text']); ?>
</script>

var postQuote=新数组();
后报价[]=
我还将它们设置为单独的变量,以便更容易调试和跟踪:

<script type='text/javascript'>
    var postQuote = new Array();
    var postQuoteKey = <?php echo json_encode($post['post_id']); ?>;
    var postQuoteValue = <?php echo json_encode($post['post_text']); ?>;
    // See what the key and value are
    console.log(postQuoteKey);
    console.log(postQuoteValue);
    postQuote[postQuoteKey] = postQuoteValue;
</script>

var postQuote=新数组();
var postQuoteKey=;
var postQuoteValue=;
//看看键和值是什么
控制台日志(postQuoteKey);
控制台日志(postQuoteValue);
postQuote[postQuoteKey]=postQuoteValue;
以下示例按预期工作:

<script>
// Number
console.log(<?php echo json_encode(1); ?>); 
// String
console.log(<?php echo json_encode("hello"); ?>);
// Boolean
console.log(<?php echo json_encode(false); ?>);
// Boolean
console.log(<?php echo json_encode(true); ?>);
// Array
console.log(<?php echo json_encode(array(1,2,3)); ?>);
// Outputs a JavaScript object
console.log(<?php echo json_encode(array("a" => 345, "b" => '242', "c" => 'hello')); ?>);
</script>

//数
console.log();
//串
console.log();
//布尔值
console.log();
//布尔值
console.log();
//排列
console.log();
//输出一个JavaScript对象
console.log();

您可能需要将php用引号括起来:
postQuote[“”]
mysql\u real\u escape\u string
用于sql,而不是javascript。使用
json\u encode
@EndeNeu如果字符串包含引号、换行符或任何需要在JavaScript字符串中编码的字符,则仅使用引号将不起作用。@JuanMendes为真。在将某些内容插入数据库之前,应使用mysql\u real\u escape\u字符串,在这一点上没有意义,因为它仍然可以在客户端+1进行操作。请注意,如果用户希望使用JavaScript中的字符串将HTML放到页面上,他们应该对内容进行HTML转义,但只能在将其插入DOM时进行。使用JSON编码绝对是让PHP字符串与JavaScript字符串配合使用的最简单方法。@Sepultura您不应该使用
mysql\u real\u escape\u string
,而应该使用预先准备好的语句,以实现最大的可移植性、安全性和速度,正如Ende Neu所说,您可以使用这样的单引号“自5.2。。。但是5.2是8岁。在这一点上,边境线不升级是不负责任的!