我在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);
但没有工作。
我在谷歌搜索,但很多人都面临同样的问题。这就是为什么我无法弄清楚 哪里出错了。 我该怎么做才能让它发挥作用? 是否有任何并行的方法来实现相同的流程?
提前致谢.. !!
答案 0 :(得分:1)
在您的JSON编码 -
中replace < with <
以及
replace & with &
:P
答案 1 :(得分:0)
YUI文件上传通过iframe进行。 responseText是该iframe的主体,因此<pre>
标记来自。
var responseNoPreTags = htmle.responseText.replace( /<\s*pre.*?>/g, '').replace ( /<\s*\/\s*pre\s*.*?>/g, '');
那应该删除<pre>
标签以及任何属性。然后你应该能够评估responseNoPreTags。