2012-05-23 39 views
-2

美好的一天,我的PHP代码有一个很奇怪的错误。我试图通过从xml文件读取动态更改我的网页的内容。我读了一些数据并将数据分配给名为$ course_title的PHP变量,然后尝试调用一些将更新DOM元素的“innerHTML”的Javascript。注意:在行“echo $ course_title;”打印出正确的数据在屏幕上。与PHP变量PHP的javascript调用

$fn = dirname(__FILE__)."/course.xml"; 
$xml = simplexml_load_file($fn); 
$course_bookimagelocation = ""; 
foreach ($xml->children() as $child) 
{ 
    if($child[0]->getName()=="book") 
     $course_bookimagelocation = $child; 
    if($child[0]->getName()=="title") 
     $course_title = $child; 
} 
//Problems start here... 
echo $course_title; 
echo '<script type="text/javascript">document.getElementById("heading").innerHTML = "'; 
echo $course_title; 
echo '";</script>'; 

什么是非常独特的是,第一个echo语句打印正确的信息,但接下来的三条线中,.innerHTML没有得到改变,以相同的值。有人知道那是什么吗?还有一点奇怪的是,如果我用'Hello world!'替代第二个“echo'$ course_title';”。随后的 “Hello World!” 出现在 “标题” ID对象的innerHTML。

编辑

在叫course.xml XML文件中,标题元素是IC 210 2010年秋季和$ COURSE_TITLE的内容是IC 210 2010年秋季所以PHP文件的解析似乎是正确的,有没有接缝的任何特殊字符,如一个

我也三编辑把所有的东西放在同一行,而不是运气...(我甚至确认在xml文件中,<标题>元素在同一行上有文字...

+0

能否请您告诉我们从回声语句之前的HTML?从这些回声中得到的渲染输出也会有所帮助。 –

+2

只是一个简单的问题,你知道当$ course_title包含课程名称'class'foo>'或任何其他在JavaScript/HTML中有特殊含义的字符时会发生什么?因为答案可能不在于它仍然存在一个重要的事情要实现 – ikanobori

+0

这可能是''course_title'中的某些内容导致引号提前结束检查源代码并查看输出内容您可能需要向输出添加斜杠,具体取决于您的服务器config. –

回答

1

确保.innerHTML = "Some text"是在同一行,因为.innerHTML = "\nSome Text\n"不会在JavaScript工作。

如果你想有这样的事情:

.innerHTML = " 
Some String 
"; 

尝试:

.innerHTML = ""+ 
"Some String" + 
""; 
+1

对于记录以及其他任何有这个问题的人,我认为主要的问题是在XML文件中,我恰好从中获取数据。我在标签和数据之间的xml文件中有新行。 – Matthew

+0

@Mthethew由于同样的问题(xml中的数据和数据之间的换行符),我还没有睡过2个晚上,但我们的对话非常无关紧要。我很高兴我帮助你。祝你好运。 – Leri

0

“调用一些Javascript将更新DOM元素的“innerHTML”。为此,我们使用AJAX,不是吗?

好吧,你可以这样做,但我认为将文本预加载到一些隐藏的DIV中并使用你的函数来改变DIVS的内容,甚至切换DIV的可见性(如你喜欢的)会更简单。这样你就可以避免评论中提到的很多逃避问题。

是这样的方式,我会怎么做,如果不使用AJAX