2011-06-23 140 views
0

我有這種形式上傳xml文件到服務器,我使用fiddler來監視每個req和resp。因此,服務器發送了我一個小的XML,我想收到它在我的JavaScript作爲XMLHttpRequest使它發生如何在客戶端接收響應?

注:我上傳文件,以便enctype="multipart/form-data"

var client; 
var url_action = "/csm/create.action"; 
var dataString; 

if (window.XMLHttpRequest) { 
    client = new XMLHttpRequest(); 
} else { 
    client = new ActiveXObject("Microsoft.XMLHTTP"); 
} 
if (client.readyState == 4 && client.status == 200) { 
    alert(client.responseTest); 
} 
client.open("POST", url_action, true); 
client.setRequestHeader("enctype", "multipart/form-data"); 
client.send(); 

我的問題是如何能我從服務器端收到JS變量的響應。在上面的代碼XMLHttpRequest我不認爲我可以發送多部分請求(文件上傳)。所以任何替代方案都是值得歡迎無論哪種解決方案都能爲我提供一個好的答案。 這是我正在做的,提交表格。謝謝:)

var url_action="/csm/create.action"; 
$('#mainForm').attr('action', url_action); 
$('#mainForm').submit(); 

與解決方案

$(data).find('com\\.abc\\.db\\.ConfigInfo').each(function(){ 
     cfgid=$(this).find('cfgId').text(); 
     cfgname=$(this).find('cfgName').text(); 
     filename=$(this).find('fileName').text(); 
     timestamp=$(this).find('updateDate').text(); 

     alert(cfgid+", "+cfgname+", "+filename+", "+timestamp); 

     }); 

回答

1

更新您有jQuery的可用,因此永遠不要創建XHR對象手動。 除此之外,您不能使用AJAX進行文件上傳,除非您不關心與某些瀏覽器的兼容性。

最後但並非最不重要的一點,如果表單中有file輸入,您希望使用jQuery form plugin,它將自動回退到隱藏的iframe和常規表單。 請注意,您需要在<textarea></textarea>中包裝您的JSON響應才能正常工作。詳情請參閱http://jquery.malsup.com/form/#file-upload。如果你想返回XML,你不需要包裝它 - 它應該工作正常,沒有任何服務器端的變化。

+0

我使用了插件,我的警報給出了'謝謝你的評論![對象XMLDocument]'看到我更新的問題 – Ricky

+0

謝謝我解析了xml,它很好用:) – Ricky

相關問題