2011-08-04 126 views
1

我正在使用jquery調用一個ASP MVC控制器。其中返回一個局部視圖。即一堆的HTML試圖解析xhr.responseText

在出現錯誤的情況下,我想爲用戶填充一些信息,但ASP MVC發送完整頁面,因此我需要從中取出文本。

我已經試過:

$('#edit').ajaxError(function (e, xhr, settings, exception) { 
     var item = xhr.responseText.text(); 
     var response = item.match(/.*<body.*>(.*)<\/body>.*/); 
     if (!response) { 
      $(this).html('Error: ' + xhr.status + ' Message:' + xhr.statusText); 
     } 
     else { 
      $(this).html(response); 
     }; 
    }); 

,但我得到遺漏的類型錯誤:[其次xhr.responseText內容]有沒有一種方法文本

如果我叫賽直接的responseText我得到空結果是。

我猜我有一些根本性的誤解怎麼回事,這樣如果有人能幫助...

回答

6

你也應該修改您的正則表達式,包括換行符,即

var response = xhr.responseText.match(/.*<body.*>([\s\S]*)<\/body>.*/); 
+0

這幫助我得到了博德內容,其中xhr.responseText返回了一個完整的頁面HTML。 –

3

xhr.responseText是一個字符串(docs),並且有一個名爲text()String原型的原始方法。因此,下面的線,在那裏你嘗試調用.text()關閉responseText,導致該錯誤:

var item = xhr.responseText.text(); 

由於match()是在String原型的方法,你只需把它直接關閉responseText,如果你想找到其中的東西。

var response = xhr.responseText.match(/.*<body.*>(.*)<\/body>.*/); 

無論是從那裏找到什麼,我們拭目以待;)

+0

啊,我打電話的文本,因爲它沒有對自身的responseText合作,看看是否能夠幫助.. –

+1

我明白了,你不能只是編寫隨機方法的名稱,並稱他們只是因爲某些東西不起作用...:P – JAAulde

0

你的正則表達式是要碰見你的HTML換行符麻煩。

var response = xhr.responseText.replace(/[\r\n]/g, ' ').match(/<body.*>(.*)<\/body>/); 

首先清除掉換行符。

1
$(function() { 

var bar = $('.bar'); 
var percent = $('.percent'); 
var status = $('#status') ; 

$('form').ajaxForm({ 

    beforeSend: function() { 
     status.empty(); 
     var percentVal = '0%'; 
     bar.width(percentVal) 
     percent.html(percentVal); 
    }, 
    uploadProgress: function(event, position, total, percentComplete) { 
     var percentVal = percentComplete + '%'; 
     bar.width(percentVal) 
     percent.html(percentVal); 
    }, 
    success: function() { 
     var percentVal = '100%'; 
     bar.width(percentVal) 
     percent.html(percentVal); 
    }, 
    complete: function(xhr) { 
     $('#ttt').html(xhr.responseText.replace(/[\r\n]/g, ' ').match(/<!--t-->([\s\S]*)<!--t1-->/)); 
    } 

}); 



})();  
+1

我在8月4日問過這個問題 - 我什至不記得當時正在做什麼。你應該儘量避免重新提出舊問題。特別是那些有一個公認的答案 - 除非你真的相信你可以改進。在這種情況下,說出你爲什麼認爲你的答案更好。 –