1

私はこのスクリプトを使用しています:

var test = $.ajax({ url : ("/areas/list"), type : 'GET', dataType : 'json', success : function(e) {

    } });

私はこの結果を得るvar text:

    Object {readyState: 1, getResponseHeader: function, getAllResponseHeaders: function, setRequestHeader: function, overrideMimeType: function…}
abort: function ( statusText ) {
always: function () {
complete: function () {
done: function () {
error: function () {
fail: function () {
getAllResponseHeaders: function () {
getResponseHeader: function ( key ) {
overrideMimeType: function ( type ) {
pipe: function ( /* fnDone, fnFail, fnProgress */ ) {
progress: function () {
promise: function ( obj ) {
readyState: 4
responseJSON: Object
responseText: "{↵ "kind": "fusiontables#sqlresponse",↵ "columns": [↵  "INSEE_COM",↵  "KML",↵  "NOM_COMM"↵ ]}"
setRequestHeader: function ( name, value ) {
state: function () {
status: 200
statusCode: function ( map ) {
statusText: "OK"
success: function () {
then: function ( /* fnDone, fnFail, fnProgress */ ) {
__proto__: Object

問題は、このオブジェクトにあります。応答 JSON でオブジェクトのみを取得したいと考えています。test.responseJSON で試してみましたが、うまくいきません...

JSON のみを取得するにはどうすればよいですか?

ご協力いただきありがとうございます !

F.

4

4 に答える 4

4

成功のコールバックで返されたデータで何もしていません。

これはうまくいくはずです:

var test;

$.ajax({ 
  url: "/areas/list", 
  type: 'GET', 
  dataType: 'json', 
  success: function(response) {
    // Do what ever with the response here
    console.log(response);

    // or save it for later. 
    test = response;
  } 
});

応答を変数に保存することにした場合、すぐにアクセスすることはできません。ajax リクエストは完了しません。成功のコールバックで JSON オブジェクトの処理を行うのが最善です。

于 2013-11-05T07:42:23.463 に答える
3

変数の値は、結果ではなく、関数呼び出しtestによって返される値になります。コールバック ( ) が使用されるのはそのためです。コールバックは、ajax 呼び出しが取得を要求されたものを正常に取得したときに呼び出されます。$.ajax()$.ajaxsuccess: function(e) {}success

e成功のコールバックの内容を確認してください!

$.ajax({url: ("/areas/list"), type: 'GET', dataType: 'json', success: function(e) {
  console.log(e); // e == result from the ajax call.
}});
于 2013-11-05T07:41:28.300 に答える
1

1. JSON データを返しますか?

AJAX で、次のリンクにリクエストを送信しています/areas/list- Rails コントローラーでそのリクエストをどのように処理していますか?

JSON データを返すには、次のように読み取る必要があります。

#app/controllers/areas_controller.rb
def list
    respond_to do |format|
        format.json { return :json => "hello".to_json }
    end
end

コントローラーのコードを投稿することは、私たち全員にとって大きな助けになります


2. JSON データを正しく処理していますか?

JSONdata は「通常の」JavaScript データとは異なります。JSON 解析関数を使用して、サーバーから返されたときに解析する必要があります。

$.ajax({ 
     url : ("/areas/list"),
     type : 'GET',
     dataType : 'json',
     success : function(data) {
        var json_data = JSON.parse(data);
        //do what you need here with the new array
    }
});
于 2013-11-05T08:56:49.503 に答える
1

同期的に値をフェッチしようとしていますが、これは良い習慣ではありません。次の方法を試してください。

var test;
$.ajax({  
    url:"/areas/list",  
    type:"GET",  
    dataType:"JSONP",  
    success:function(testdata){  
    console.log(testdata);  
    test=testdata;  
    }  
});
于 2013-11-05T07:47:16.927 に答える