2015-03-30 43 views
0

我是JS,JSON和AJAX的新手。我正在使用它在我的SAP環境中開發一個簡單的應用程序。我在將AJAX響應轉換爲java數組時感到有點不安。代碼中有什麼:Javascript數組:AJAX,JSON

function addTable() 
{ 
    var urls = new Array(); 
    $(document).ready(function() 
    { 
     var params = getURLParam().split('?'); 
     $.post("GetBayDetails.htm", {url: getURLParam(), params: params[1]}) 
       .done(function (data) 
       { 
        var url = $.parseJSON(data); 
        urls.push(JSON.parse(url)); 
        $.each(url, function (i, v) 
        { 
         push.urls[i] = v.bay; 
        }); 
       }); 
    }); 
    alert(urls[2]); 
} 

但如果我通過「URLS」循環,我看不到任何值附加到數組。請任何人都可以提供一些幫助來解決這個問題嗎?

+0

你已分析與'$ .parseJSON'的反應,你應該不需要再調用'JSON.parse'就可以了。 – Barmar 2015-03-30 22:01:59

+0

請發佈一個響應JSON樣子的例子。 – Barmar 2015-03-30 22:03:40

+0

嗨,json看起來像{「bay」:「B01」,「url」:「thtrack1」},{「bay」:「B02」,「url」:「」},{「bay」:「B03」, 「url」:「not defined」},{「bay」:「B04」,「url」:「」},{「bay」:「B05」,「url」:「colm2」},{「bay」 「B06」,「url」:「」}, – 2015-03-30 22:17:12

回答

0

試試這個。我的變化是:

  1. 使用"json"的dataType參數$.post因此它會自動解析響應。

  2. 在您根據需要調用的函數內不需要使用$(document).ready()。這隻在執行必須等待DOM加載的初始操作時才需要。

  3. 沒有必要致電JSON.parse(url),因爲這已經被解析。

  4. 添加到urls陣列的正確方法是urls.push(v.bay)

  5. 初始化數組的首選方法是使用[]而不是new Array()

  6. alert(urls[2])需要在.done()函數中。否則,您會在AJAX調用完成之前發出警報。

function addTable() { 
    var urls = []; 
    var params = getURLParam().split('?'); 
    $.post("GetBayDetails.htm", {url: getURLParam(), params: params[1]}, "json") 
     .done(function (url) { 
     $.each(url, function (i, v) { 
      urls.push(v.bay); 
     }); 
     alert(urls[2]); 
    }); 

} 

DEMO

+0

thnk u barmar,unf這對我不起作用....只是花更多的時間在這裏找出問題! – 2015-03-30 23:52:07

+0

它應該現在工作。 – Barmar 2015-03-31 00:00:57

+0

thkx它現在好了,但如果我不得不引用「帖子」之外的數組它不工作......要做的任何事情? pls advise – 2015-03-31 00:05:50