Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/279.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
使用PHP将文本从MySQL传递到Javascript函数时遇到问题_Php_Javascript_Mysql_Html - Fatal编程技术网

使用PHP将文本从MySQL传递到Javascript函数时遇到问题

使用PHP将文本从MySQL传递到Javascript函数时遇到问题,php,javascript,mysql,html,Php,Javascript,Mysql,Html,这就是问题所在。我将MySQL数据库中的数据作为文本。数据通过mysql\u real\u escape\u字符串插入。我对向用户显示的数据没有问题 在某个时候,我想将这些数据传递到一个名为foo的javascript函数中 // This is a PHP block of code // $someText is text retrieved from the database echo "<img src=someimage.gif onclick=\"foo('{$someTex

这就是问题所在。我将MySQL数据库中的数据作为文本。数据通过mysql\u real\u escape\u字符串插入。我对向用户显示的数据没有问题

在某个时候,我想将这些数据传递到一个名为foo的javascript函数中

// This is a PHP block of code
// $someText is text retrieved from the database

echo "<img src=someimage.gif onclick=\"foo('{$someText}')\">";
javascript中断,因为html输出为

<img src=someimage.gif onclick="foo('line1
line2
line3')">

所以问题是,如何将$someText传递给javascript foo函数,同时保留换行符和回车符,但不中断代码

===========================================================================================

在像这样使用json之后:

echo "<img src=someimage.gif onclick=\"foo($newData)\">";
onclick="foo("line 1<br \/>\r\nline 2");">
echo”“;
它输出的HTML如下所示:

echo "<img src=someimage.gif onclick=\"foo($newData)\">";
onclick="foo("line 1<br \/>\r\nline 2");">
onclick=“foo”(“第1行\r\nline 2”);”>

显示图像后接第2行“;”>

如果我的口译不差,您可以这样做:

// This is a PHP block of code
// $someText is text retrieved from the database

echo "<img src=someimage.gif onclick=\"foo('{".trim( preg_replace( '/\s+/', ' ',$someText ) )."}')\">";
//这是一段PHP代码
//$someText是从数据库检索到的文本
回声“;
json\u encode()
是一条可行之路:

$json = json_encode($someText); # this creates valid JS
$safe = HtmlSpecialChars($json); # this allows it to be used in an HTML attribute
echo "<img src=someimage.gif onclick=\"foo($safe)\">";
$json=json_encode($someText);#这将创建有效的JS
$safe=HtmlSpecialChars($json);#这允许在HTML属性中使用它
回声“;

您可以在这里看到一个演示:

将JavaScript从HTML中拉出,您将省去很多麻烦:

<img id="myImage" src="someimage.gif"/>
<script type="text/javascript">
    var str = <?php echo json_encode($json); ?>;
    document.getElementById('myImage').addEventListener(
        'click',
        function() {
            foo(str);
        }
    );
</script>

var-str=;
document.getElementById('myImage')。addEventListener(
“点击”,
函数(){
foo(str);
}
);
或者类似的东西…

只有json_encode()就足以跳出新行

echo "<img src=someimage.gif onclick=\"foo(".json_encode($newData).")\">";
echo”“;

一种解决方案是使用。重复的值是否希望值在一行中?这将删除任何类型的新行,并有效地更改
$someText
。我在使用json后更新了该问题。对正在发生的问题有什么建议吗?用您可能缺少的位进行更新-引号内的引号也需要html转义。这就是我需要的。非常感谢你。一旦我有了15个名声,我就会投票支持这个。再次感谢!如果你还在的话,还有一个问题。现在它已经传递到了我的脚本中,我将数据显示在一个文本区域中给用户,但是我不希望数据以
等方式显示,是否有一个与json_decode()等价的javascript?听起来像是在数据库中存储“
”,这可能不是您想要做的。您可以用几种方法来解决它,但一个简单的方法是执行
document.getElementById('my-textarea')。innerHTML=_数据以便浏览器为您解码HTML。