【发布时间】:2016-04-21 11:26:39
【问题描述】:
我想将 html 文件读取到 php 脚本(控制器)中的变量 $shtml。然后将此变量传递给 jQuery 变量,并在 jQuery 中执行具有特定属性搜索的特定 div,即从文件中提取一些数据。我无法将 html 文件内容获取到 jQuery 脚本 - 脚本停止工作。这个怎么做?
更正的问题:
<?php
....// action in Controller
$filenameHtml = "some.html";
$file1 = fopen( $filenameHtml, 'r');
$shtml1 = json_encode( fgets($file1) );
return $this->render('RecRecipBundle::dish/blue.html.twig', array(
'shtml1' => $shtml1,
));
...
?>
树枝模板:
{% block %}
<script type="text/javascript">
document.getElementById('click_me').addEventListener( "click", function(event) {
( function(event) {
var filestr = "{{ shtml1 }}" ;
var parsed = jQuery.parseJSON( filestr ); //if i add this line the script stops working
//alert ("parsed" + parsed);
alert(filestr); // prints : "<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
"
alert(this);
}).call(document.getElementById('click_me'), event);
});
</script> {% endblock %}
原问题:
PHP 控制器:
/**
* Lists all Dish entities.
*
* @Route("/blue", name="blue")
* @Method({"GET", "POST"})
*/
public function blueAction(Request $request)
{
$filenameHtml = "/var/www/RecB1_28/dwnl/Blueberries_raw_nutr.html";
$shtml1 = fgets($file1);
// 它不适用于任何文件读取方法:fread、fscanf、file、file_get_contents
$ans = $request->request->get('ans', ''); // will use later to pass jQuery variable to the php script
( isset($ans) and !is_null($ans) ) ? $ans : ''; // print_r($ans);
( isset($shtml1) and !is_null($shtml1) ) ? $shtml1 : ''; //
return $this->render('RecRecipBundle::dish/blue.html.twig', array(
'ans' => $ans,
'shtml1' => $shtml1,
'my_php_variable' => "just to check if prints",
));
} // public function blueAction(Request $request
树枝模板:
{% extends "RecRecipBundle::layout.html.twig" %}
{% block body %}
<!-- works only with 'my_php_variable', if i use 'shtml1' script stops working -->
<a href="#" id="click_me">Click Me</a>
<br><br> WORKS: my_php_variable = {{my_php_variable}}
<br><br> WORKS: shtml1= {{shtml1}}
{# <br><br> WILL USE LATER TO PASS jQUERY variable: ans = {{ ans }}, #}
{% endblock %}
{% block footer %} {% endblock %}
{% block javascripts %}
<script type="text/javascript">
document.getElementById('click_me').addEventListener("click", function(event) {
(function(event) {
// .html() returns the html as plain text
var filestr ='{{my_php_variable}}' // script works, alert window pops-out
//var filestr ='{{shtml1}}' // script does not work, alert window does not pop-out
//var filestr ='{{shtml1}} '.html(); // script does not work, alert window does not pop-out
alert(this);
}).call(document.getElementById('click_me'), event);
});
</script>
{% endblock %}
【问题讨论】: