2013-11-04 89 views
0

在此腳本中,我們有一個'stager'函數,它將在數據發送回數據庫之前充當屏幕上用戶交互的中介。 AJAX調用成功,但不是從div內的數據庫查詢,我有[object Object]。如果我檢查控制檯,我發現來自數據庫的數據是正確的。我如何更改我的代碼,以便我可以在我的div中獲取文本。我通常對AJAX和JavaScript產生誤解的基本元素/提示在未來避免這種情況。jQuery控件的AJAX文本屬性成功返回[object Object]

編輯:只是注意到這是最有可能的,因爲我的stageOptions對象沒有作爲屬性的AJAX調用,但直的文本。這現在更符合我想要的。

$(document).ready(function() { 
      var stageOptions = { 
       //some baseline options for the stager control 
       size: { 
        small: 'small', 
        medium: 'medium', 
        large: 'large' 
       }, 
       content: { 
        historical: 'historical', 
        predictive: $.ajax({ 
        type: "POST", 
        url: "../Service.asmx/GetDrugs", 
        contentType: "application/json", 
        dataType: "json", 
        success: function (data) { 
         data.d; 
         console.log(data.d); 
         console.log('success'); 
        }, 
        error: function (xhr) { 
         console.log('error'); 
        } 
       }) 
       } 
      }; 
      /*************functions************************/ 
      function stager(options) { 
       var $div = $('<div>').addClass(options.size); 
       $div.text(options.content); 
       return $div; 

      }; 

      stager({ size: stageOptions.size.small, 
       //size and content will be much more variable in the future 
       content: stageOptions.content.predictive 
      }).appendTo('body'); 
     }); 
+1

當你'警報({FOO: 「巴」})',你會得到'[對象的對象]'太。這是因爲對象的字符串表示是'[object Object]'。如果你想顯示json,可以將你的dataType改爲text或者html,或者將json字符串化。或者,您可以解析json並創建html。 –

回答

0

你返回一個對象,因此,如果你想把它當作一個字符串嘗試:

$div.text(JSON.stringify(options.content)); 
1

字符串化不會解決這個問題。將options.content設置爲div的文本不起作用,因爲您將整個內容對象設置爲文本。我認爲你也可能想重新考慮你是如何做的,因爲你立即設置你的div的文本,然後將其附加到body而不檢查你的ajax請求是否完成。通常情況下,你可以從options.content.responseJSON訪問你的JSON,但是當你設置文本時,ajax調用沒有完成,並且在那個時候仍然沒有定義。

你可以切換周圍的事物來:

$(document).ready(function() { 
     var stageOptions = { 
      //some baseline options for the stager control 
      size: { 
       small: 'small', 
       medium: 'medium', 
       large: 'large' 
      }, 
      content: { 
       historical: 'historical', 
       predictive: 'predictive' 
      } 
     }; 
     /*************functions************************/ 
     function stager(options) { 

      $.ajax({ 
       type: "POST", 
       url: "test.json", 
       contentType: "application/json", 
       dataType: "json", 
       success: function (data) { 
        var $div = $('<div>').addClass(options.size); 
        $div.text(data.d).appendTo('body'); 
       }, 
       error: function (xhr) { 
        console.log('error'); 
       } 
      }); 

     }; 

     stager(stageOptions.size.small); 
    }); 
相關問題