2011-08-04 12 views
1

私はjquery getを使用して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); 
     }; 
    }); 

しかし、私は捕捉されない例外TypeErrorを得る:

私が試してみた[xhr.responseTextの内容が続い]何のメソッドテキスト

を持っていない私が直接responseTextの試合を呼び出す場合、私はnullを取得します結果として。私は誰が助けることができますので、もしいくつかの基本的な誤解が起こっているんだ推測している

...

答えて

6

あなたはまた、すなわち

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

これは、xhr.responseTextが完全なページを返していたbodeの内容を取得するのに役立ちましたhtml。 –

3

xhr.responseTextは、文字列(docs)で、text()という名前Stringプロトタイプのネイティブ方法はありません。したがって、あなたはresponseTextオフ.text()を呼び出そうと下の行は、そのエラーの原因:

var item = xhr.responseText.text(); 

match()Stringプロトタイプの方法ですので、あなたがしようとしている場合は、あなただけのresponseTextから直接それを呼ぶだろうそこに何かを見つける。あなたの正規表現は、あなたのHTML内の改行からトラブルに実行しようとしている

+0

ああ、改行文字を含めるように正規表現を変更する必要があり、私はテキストを呼んでいました。.. –

+1

私は、ちょうどランダムなメソッド名を作って、何かがうまくいかないと思うのです...:P – JAAulde

0

);

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

それはそこから何かを見つけたかどうか、我々が表示されます。

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

最初に改行を削除します。それはそれが役立つだろうかどうかを確認するためにresponseText自体に働いていなかったとして

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

私はこの質問を2011年8月4日に尋ねました - 私はその時に働いていたことを覚えていません。古い質問を復活させないようにしてください。特に受け入れられる答えがあるもの - あなたが本当に改善できるものがあると信じない限り。あなたの答えがより良いと思われる理由を言うと、 –

関連する問題