2011-07-14 46 views
2

これは愚かな質問かもしれません。申し訳ありませんが、その場合です。私はからHTMコードでAjaxの呼び出しに応答コントローラからAJAX呼び出しrails 3 jquery ajax呼び出しがstatusTextで失敗する: "parsererror"

$.ajax({ 
    type: "POST", 
    cache: false, 
    url: url, 
    data: data, 
    error: function(jqXHR, textStatus, errorThrown){ 
     console.log(jqXHR); 
     console.log(textStatus); 
     console.log(errorThrown); 
    }, 
    success: function(msg){ 
     alert('Load was performed.'); 
    } 
    }); 

からのhtmlを交換しようとしています最新のjqueryのレールの宝石とレール3アプリケーションで

「1.0.12」 js.erbファイル js.erbファイルの内容は、応答が受信され

<img src="<%[email protected]%>" id="<%[email protected]_id%>"> 

ですがParseErrorのエラーがトリガされます。応答のヘッダにおける コンテンツタイプは

Content-Type:text/javascript; charset=utf-8 

エラー・コールバックにおけるjqXHR応答は、Iがテキストではなく、サーバーがスローそうすることによって、データ型を設定しようとしたこの

Object 
abort: function (statusText) { 
always: function() { 
complete: function() { 
done: function() { 
error: function() { 
fail: function() { 
getAllResponseHeaders: function() { 
getResponseHeader: function (key) { 
isRejected: function() { 
isResolved: function() { 
overrideMimeType: function (type) { 
pipe: function (fnDone, fnFail) { 
promise: function (obj) { 
readyState: 4 
responseText: "<img src="/images/author_tests/copywriter_photo_2.jpg" id="copywriter-test-4e1c3eb5e09c1657fb000003">" 
setRequestHeader: function (name, value) { 
status: 200 
statusCode: function (map) { 
statusText: "parsererror" 
success: function() { 
then: function (doneCallbacks, failCallbacks) { 
__proto__: Object 

を含んでいますエラー

ActionView::MissingTemplate (Missing template [.....] with {:locale=>[:"en-US", :"en-US"], :handlers=>[:rhtml, :rxml, :builder, :haml, :erb, :rjs], :formats=>[:text, "*/*"]} 

私は間違っていますか?

+0

この質問からの回答が役立つかもしれません:http://stackoverflow.com/questions/6089444/parser-error-when-using-jquery-ujs-for-remote-link-to-in-rails-3- app-how-can-id/6684330#6684330 – karenism

答えて

0

あなたが返すものは、実際にはJSではなくHTMLです。 js.erbファイルの内容は、評価のためにjavascriptエンジンに渡されるため、HTMLで窒息しています(これは有効なjavascriptではないためです)。

HTMLを返すだけで、ページ上の要素を置き換えたい場合はjQuery .load()メソッドを試し、URLに.htmlの拡張子を付けます。次に、あなたの.js.erbファイルの内容をコントローラのhtml形式に応答するものに移動します。

関連する問題