无法在PHP中呈现这行jQuery

无法在PHP中呈现这行jQuery,php,jquery,Php,Jquery,我正在尝试用PHP呈现在演示的页面,但有一行出现问题,如: google.maps.event.addListener(marker0, 'click', function() { $('#photo').html('<img src="http://www.pdavis.nl/Ams/IMG_4631.jpg"></img>'); }); google.maps.event.addListener(marker0,'click',function(){ $('

我正在尝试用PHP呈现在演示的页面,但有一行出现问题,如:

google.maps.event.addListener(marker0, 'click', function() {
    $('#photo').html('<img src="http://www.pdavis.nl/Ams/IMG_4631.jpg"></img>');
});
google.maps.event.addListener(marker0,'click',function(){
$('#photo').html('');
});
以下操作不起作用:

echo "google.maps.event.addListener(marker " . $i . ", 'click', function() {
     $('#photo').html('<img src=\"http://www.pdavis.nl/Ams/IMG_8302.jpg\"></img>');
 });";
echo“google.maps.event.addListener(标记“$i.”,'click',function(){
$('#photo').html('');
});";
我做错了什么(我以为只需要去掉两个双引号)

看起来像是o型的

我认为问题在于
标记
“$I”之间的空格

更改:

echo "google.maps.event.addListener(marker " . $i . ", 'click', function() {
     $('#photo').html('<img src=\"http://www.pdavis.nl/Ams/IMG_8302.jpg\"></img>');
 });";
echo“google.maps.event.addListener(标记“$i.”,'click',function(){
$('#photo').html('');
});";

echo "google.maps.event.addListener(marker" . $i . ", 'click', function() {
     $('#photo').html('<img src=\"http://www.pdavis.nl/Ams/IMG_8302.jpg\"></img>');
 });";
echo“google.maps.event.addListener(标记“$i.”,'click',function(){
$('#photo').html('');
});";

首先,这里出现语法错误的原因是PHP看到了
{$
,并希望这意味着字符串中会有一个嵌入变量

PHP正在寻找类似这样的东西,
echo“…{$varName}…”;

您用
{$(…
给出的语法使它混淆

你可以通过用反斜杠避开美元符号来立即解决这个问题

但是,由于您没有在字符串中嵌入任何变量(即使您的
$i
是串联的而不是嵌入的),因此您可能应该使用单引号而不是双引号。这样就完全避免了美元符号的问题(当然,您必须转义字符串中的单引号)

最后,我能给你的最好建议是不要在PHP中生成太多JavaScript代码

最好将上述代码放入Javascript函数中,然后在PHP代码中生成函数调用。例如:

在您的JS代码中,您将拥有以下内容:

function myMapPointer(markerID) {
    google.maps.event.addListener(markerID, 'click', function(){$('#photo').html('<img src="http://www.pdavis.nl/Ams/IMG_4631.jpg"></img>');});
}

我相信您会同意,从这两个方面来看,它都更容易阅读。

在我看来,在PHP中嵌入其他代码的最佳方法是使用单引号

只需将jQuery中的单引号切换为双引号

当然,在
img
标记中,您将需要单引号和双引号。在这种情况下,因为我们使用单引号开始echo,所以对
src
属性使用单引号并转义它们

echo 'google.maps.event.addListener(marker0, "click", function() {
    $("#photo").html("<img src=\'http://www.pdavis.nl/Ams/IMG_4631.jpg\'></img>");
});'
echo'google.maps.event.addListener(标记0,“单击”,函数(){
$(“#照片”).html(“”);
});'

使用单引号时,PHP不会尝试插入代码,因此您将按照您在此处放置的内容进行响应。

简短而甜蜜的回答是:

echo "google.maps.event.addListener(marker".$i.", 'click', function() {\n\$('#photo').html('<img src=\"http://www.pdavis.nl/Ams/IMG_8302.jpg\"></img>');\n});";
echo“google.maps.event.addListener(标记“$i.”,'click',function(){\n\$('#photo').html('');\n};”;

使用\n使缩进(用于所需的输出外观)和a \在$处转义以阻止PHP看到未定义的变量。我还将“$I.”放在一起,并将其直接放在“marker”之后正如您所说的,代码应该看起来像marker0 marker1 marker2。

您的控制台中有任何JS错误吗?我们没有足够的信息来回答…试试看,$symbol有一个问题:
echo'google.maps.event.addListener(marker.$i.),“click”,function(){$(“#photo”).html(“”;});”
在编辑问题后,将
{
$
在不同的行中,原始代码中不再有PHP语法错误,因此我的答案的第一部分不再适用。但是,出于可读性和可维护性的原因,我坚持我的建议,尽可能多地从PHP代码中删除JS。谢谢你。简单的原因是:我很熟悉PHP代码r与PHP,但JavaScript新手;没有想到在PHP之外使用JavaScript。经过思考:谢谢,但我必须在PHP中生成JavaScript,因为指向a.JPG的硬链接将被每个标记的不同链接所取代,通过从头开始从数据库中拔出,我现在已经完全分离了PHP来自JavaScript.Indeen的代码更加优雅,尤其是因为还有相当多的JavaScript需要添加。@PeterBeresford-非常棒。描述得好:-)。祝您项目好运。@PeterBeresford欢迎您,我很乐意帮助您!
echo "google.maps.event.addListener(marker".$i.", 'click', function() {\n\$('#photo').html('<img src=\"http://www.pdavis.nl/Ams/IMG_8302.jpg\"></img>');\n});";