YUI:文件中的问题上传和处理脚本..!

时间:2011-02-14 12:29:04

标签: javascript yui javascript-framework

我在YUI中开发了一个界面。其中有一个表单可以在提交点击时上传文件。

YAHOO.util.Connect.setForm(document.getElementById('settings_Form'),true); 
YAHOO.util.Connect.initHeader('Content-type','text/javascript');
callbackFn =  {
 upload: function(html) {
  eval(html.responseText);
 }
};
YAHOO.util.Connect.asyncRequest('POST', 'pgRequests.php?t=settings', callbackFn);

pgRequests.php处理上传的文件并返回一些javascript代码,如:

var servResponse = {"global_onOff":0,"off_msg":"OFF","id":0,"service":"Change Settings"};

但是当调用“upload”时,'html'变量包含随附的javascript代码 <pre></pre>个标签。这就是为什么eval()函数不能在那里工作。

我尝试使用以下方法在PHP文件中设置标题:

header("Content-type: text/javascript; charset: UTF-8");
header("Cache-Control: must-revalidate");
$ExpStr = "Expires: " . gmdate("D, d M Y H:i:s", time() - 1) . " GMT";
header($ExpStr);

但没有工作。

我在谷歌搜索,但很多人都面临同样的问题。这就是为什么我无法弄清楚 哪里出错了。 我该怎么做才能让它发挥作用? 是否有任何并行的方法来实现相同的流程?

提前致谢.. !!

2 个答案:

答案 0 :(得分:1)

在您的JSON编码 -

replace < with &lt;

以及

replace & with &amp; 

:P

答案 1 :(得分:0)

YUI文件上传通过iframe进行。 responseText是该iframe的主体,因此<pre>标记来自。

       var responseNoPreTags = htmle.responseText.replace( /<\s*pre.*?>/g, '').replace ( /<\s*\/\s*pre\s*.*?>/g, '');

那应该删除<pre>标签以及任何属性。然后你应该能够评估responseNoPreTags。