2011-02-14 34 views
1

我在YUI中開發了一個接口。其中有一個表單上傳提交文件時點擊。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"}; 

但是,當「上傳」之稱,在「HTML」變量包含附帶 <pre></pre>標籤的JavaScript代碼。那就是爲什麼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); 

,但沒有工作。

我在谷歌搜索,但很多人都面臨着同樣的問題。這就是爲什麼我無法弄清楚 哪裏出錯。 我該怎麼做才能使它工作? 是否有任何並行的方式來實現相同的流程?

在此先感謝.. !!

回答

1

在你的JSON編碼 -

replace < with &lt; 

replace & with &amp; 

:對

+0

它不能解決我遇到的問題。 – Vin 2011-02-15 04:42:20

0

YUI的文件上傳時通過iframe。 responseText是該iframe的主體,因此<pre>標籤來自哪裏。

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

這應該刪除<pre>標籤以及任何屬性。那麼你應該能夠評估responseNoPreTags。