我在PHP中有一个变量,我需要在我的JavaScript代码中使用它的值.如何将我的变量从PHP变为JavaScript?
我的代码看起来像这样:
<?php
...
$val = $myService->getValue(); // Makes an API and database call
?>
Run Code Online (Sandbox Code Playgroud)
我有需要的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>
Run Code Online (Sandbox Code Playgroud) 如何将PHP变量的值转换为字符串?
我正在寻找比用空字符串连接更好的东西:
$myText = $myVar . '';
Run Code Online (Sandbox Code Playgroud)
就像ToString()Java或.NET中的方法一样.
我想在PHP中操作JavaScript数组.可以这样做吗?
$.ajax({
type: "POST",
url: "tourFinderFunctions.php",
data: "activitiesArray="+activities,
success: function() {
$("#lengthQuestion").fadeOut('slow');
}
});
Run Code Online (Sandbox Code Playgroud)
活动是一个单维数组,如:
var activities = ['Location Zero', 'Location One', 'Location Two'];
Run Code Online (Sandbox Code Playgroud)
我尝试这个时脚本没有完成...我该如何解决?
我正在从PHP数组创建一个JSON字符串.我用它编码了json_encode().
$data = array(
'title' => 'Example string\'s with "special" characters'
);
$data = json_encode( $data );
Run Code Online (Sandbox Code Playgroud)
$data使用本地化wp_localize_script()并可通过全局data变量访问.
在JS文件中,我可以通过以下方式访问信息:
var data = data.replace( /"/g, '"' ),
jsonData = jQuery.parseJSON( data );
console.log( jsonData );
Run Code Online (Sandbox Code Playgroud)
这导致输出:
{ "title":"Example string's with "special" characters" }
Run Code Online (Sandbox Code Playgroud)
将结果输入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>
Run Code Online (Sandbox Code Playgroud)
该值不会发出警报.这是什么错误?
在我看来,我有这个:
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))
Run Code Online (Sandbox Code Playgroud)
我如何"处理"/将地理数据转换为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]]]";
Run Code Online (Sandbox Code Playgroud)
我认为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) {
Run Code Online (Sandbox Code Playgroud) 我正在开发的PHP应用程序中有几个常量.我已经定义了一个Constants类,并将常量定义为const VAR_NAME = value; 在这堂课上.我想在JavaScript和PHP代码之间共享这些常量.是否有干(不要重复自己)机制来分享它们?
class Constants {
const RESOURCE_TYPE_REGSITER = 2;
const RESOURCE_TYPE_INFO = 1;
}
Run Code Online (Sandbox Code Playgroud) 假设您有一个名为$ 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.
Run Code Online (Sandbox Code Playgroud)
您希望将此变量的内容传递给Javascript函数,该函数将该值写入文本类型的INPUT中.
你会怎么做?我试过这个:
$description = htmlspecialchars ( $product->description, ENT_QUOTES );
Run Code Online (Sandbox Code Playgroud)
但是,我收到了JS错误.我也试过这个:
$description = rawurlencode ( $product->description );
Run Code Online (Sandbox Code Playgroud)
这样编码的值如下:
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
Run Code Online (Sandbox Code Playgroud)
这个值可以作为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; …Run Code Online (Sandbox Code Playgroud) qAnswersR[90430] = [];
qAnswersR[90430].push("[math]k: \frac{(x+20)^{2}}{256}+\frac{(y-15)^{2}}{81}=1[/math]");
Run Code Online (Sandbox Code Playgroud)
我需要将值转换为变量,但是当我在console.log中输出这样的数组:
console.log(qAnswersR[90430]);
Run Code Online (Sandbox Code Playgroud)
我明白了: [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]
但逃脱标签"\"消失了,但我需要它,我该怎么办?