我在PHP中有一个变量,我需要在我的JavaScript代码中使用它的值.如何将我的变量从PHP变为JavaScript?
我的代码看起来像这样:
<?php
     ...
     $val = $myService->getValue(); // Makes an API and database call
?>
我有需要的JavaScript代码,val并且看起来如下:
<script>
    myPlugin.start($val); // I tried this, but it didn't work
    <?php myPlugin.start($val); ?> // This didn't work either
    myPlugin.start(<?=$val?> // This works sometimes, but sometimes it fails
</script>
如何将PHP变量的值转换为字符串?
我正在寻找比用空字符串连接更好的东西:
$myText = $myVar . '';
就像ToString()Java或.NET中的方法一样.
我想在PHP中操作JavaScript数组.可以这样做吗?
$.ajax({
       type: "POST",
       url: "tourFinderFunctions.php",
       data: "activitiesArray="+activities,
       success: function() {
            $("#lengthQuestion").fadeOut('slow');
       }
    });
活动是一个单维数组,如:
var activities = ['Location Zero', 'Location One', 'Location Two'];
我尝试这个时脚本没有完成...我该如何解决?
我正在从PHP数组创建一个JSON字符串.我用它编码了json_encode().
$data = array(
    'title' => 'Example string\'s with "special" characters'
);
$data = json_encode( $data );
$data使用本地化wp_localize_script()并可通过全局data变量访问.
在JS文件中,我可以通过以下方式访问信息:
var data     = data.replace( /"/g, '"' ),
    jsonData = jQuery.parseJSON( data );
console.log( jsonData );
这导致输出:
{ "title":"Example string's with "special" characters" }
将结果输入http://jsonlint.com/会返回错误.删除"特殊"周围的双引号可验证字符串.
从PHP创建JSON字符串并正确转义它以在JS文件中使用的最佳方法是什么?
我使用以下代码:
<script type="text/javascript">
<?php $ctnme = $_SERVER['REQUEST_URI'];
$cnme = explode("/",$ctnme);
echo $cname = $cnme[1];
?>
var spge = <?php echo $cname; ?> ;
alert(spge);
</script>
该值不会发出警报.这是什么错误?
在我看来,我有这个:
string_location = myaddress2
    geodata = []
    for place, (lat, lng) in g.geocode(string_location,exactly_one=False):
        geodata.append((place, (lat, lng)))
    geodata_results = len(geodata)
    data = {"geodata": geodata, "geodata_results":geodata_results }
    return render_to_response("business/business_view.html",
                              data, context_instance=RequestContext(request))
我如何"处理"/将地理数据转换为JSON并将其传递给我的模板,以便我可以像数组一样"循环"它?
我是否认为我可以这样做?如果没有,那么请建议更好的解决方案.
谢谢!
UPDATE
var geodata = "[["M. L. Quezon Street<br/>Mandaue City, Philippines", [10.351381999999999, 123.923535]], ["Talamban<br/>Cebu City, Philippines", [10.353527, 123.91352500000001]]]"; 
我认为JSON没有被转义?如何在json字符串中转义特殊字符?我一直收到换行错误.
对于PHP,我会用json_encode()来解决这个问题.就像在这篇文章中一样:将PHP字符串传递给JavaScript变量(并转义换行符)但是我如何在Python/Django中执行此操作?
让我们想象一下表单编辑器,它可以编辑可用的值.如果数据包含"字符(双引号),它"破坏"HTML代码.我的意思是,让我们检查代码:所以我生成HTML:
onclick="var a = prompt('New value: ', '<?php echo addslashes($rec[$i]); ?>'); if (a != null)....
它导致了
onclick="var a = prompt('New value: ', 'aaaa\"aaa'); if (a != null) { v....
这使得JS无法工作,因此它会破坏代码.使用单个qoute,'它可以正常工作.mysql real escape做同样的事.如何转义任何字符串,以便它不会破坏javascript?
json_encode看起来还不错,但我一定做错了,它仍然很糟糕:继续看看Firefox如何看待它 - 它插入了一个"糟糕"的双引号!值只是一个简单的数字:
http://img402.imageshack.us/img402/5577/aaaahf.gif
我曾经用过:
('Ird be az új nevet:', <?php echo json_encode($rec['NAME']); ?>); if (a) { 
我正在开发的PHP应用程序中有几个常量.我已经定义了一个Constants类,并将常量定义为const VAR_NAME = value; 在这堂课上.我想在JavaScript和PHP代码之间共享这些常量.是否有干(不要重复自己)机制来分享它们?
class Constants {
    const RESOURCE_TYPE_REGSITER = 2;
    const RESOURCE_TYPE_INFO = 1;
}
假设您有一个名为$ description的PHP变量,其中包含以下值(包含引号和换行符):
Tromp L'oeil Sheath Dress
You will certainly "trick the eye" of many in this gorgeous illusion. Add it to your fall wardrobe before it disappears.
您希望将此变量的内容传递给Javascript函数,该函数将该值写入文本类型的INPUT中.
你会怎么做?我试过这个:
$description = htmlspecialchars ( $product->description, ENT_QUOTES );
但是,我收到了JS错误.我也试过这个:
$description = rawurlencode ( $product->description );
这样编码的值如下:
Michael%20Kors%0A%0ATromp%20L%27oeil%20Sheath%20Dress%0A%0AYou%20will%20certainly%20%22trick%20the%20ey%22%20of%20many%20in%20this%20gorgeous%20illusion.%20Add%20it%20to%20your%20fall%20wardrobe%20before%20it%20disappears.%0A%0AAvailable%20in%20Black%2FNude
这个值可以作为JS变量传递,但我不知道JS函数会干净地反转PHP rawurlencode.
是否有一对匹配的函数可用于在PHP中对变量进行编码以允许将其传递给JS函数 - 然后在JS中反转编码以便获取PHP变量的原始值?
编辑:澄清问题并回复评论,这里有一些测试代码:
<?php
$str =<<<EOT
Tromp L'oeil Sheath Dress
You will certainly "trick the eye" of many in this gorgeous illusion. Add it to your fall wardrobe before it disappears.
EOT; …qAnswersR[90430] = [];
    qAnswersR[90430].push("[math]k: \frac{(x+20)^{2}}{256}+\frac{(y-15)^{2}}{81}=1[/math]");
我需要将值转换为变量,但是当我在console.log中输出这样的数组:
console.log(qAnswersR[90430]);
我明白了: [math]k: rac{(x+20)^{2}}{256}+rac{(y-15)^{2}}{81}=1[/math],[math]k: 81(x+20)^{2}+256(y-15)^{2}=20736[/math]
但逃脱标签"\"消失了,但我需要它,我该怎么办?