2

Railsには、次のようなリモートtrueを含むフォームがあります。

<%= form_for(@thing, :html => { :'data-type' => 'json' },  :remote => true ) do |f| %>

そして、私はこれでjavascriptのajaxイベントをピックアップしています:

$('#new_thing').bind('ajax:complete', function(json, status, xhr){
        console.log("complete!");
        console.log(json);
        console.log(xhr);
        console.log(status);
});

コントローラには、次のように応答するコード行があります。

respond_to do |format|
  format.json { render :json => @thing }
end

問題は、サーバーからのコンソールログの戻り応答がjsonオブジェクトではなく、ステータスオブジェクトであり、json応答がエスケープされたプロパティ「responseText」の下のテキスト文字列であるということです。

@thingのjsonオブジェクトだけでサーバーを応答させるにはどうすればよいですか?

この段階のいずれかに何か問題がありますか?

ありがとう!

4

1 に答える 1

3

parseJSON(json['responseText'])サーバー応答の JSON オブジェクトを取得してみてください。関数successのハンドラーで変換なしで JSON オブジェクトを取得するには、フォーム送信イベントで Ajax 呼び出しを手動でバインドする必要があると思います$.ajax()

于 2012-12-16T14:30:09.530 に答える