2011-04-05 60 views
2

我使用jQuery來調用一個遺留系統返回以下響應Ajax響應:JavaScript的jQuery中

<script type="text/javascript"> 
var responseObj = { 
    success: ('0'=='0'), 
    cfgInfo: { 
     deletedId: '' 
    }, 
    data: { 
      id:"9470",devicePIFrom:"10.10.10.34",devicePIFromAlias:"10.10.10.34", 
      deviceCommunityRW:"",deviceCommunityRO:"H1ghL!ght",devicePIUseProxy:"1", 
      devicePITo:"10.10.10.10",devicePIToAlias:"Fake local server", 
      devicePISrcIP:"6.6.6.6",piStyle:"ICMPPing",SLAdelay:"100", 
      devicePIToPort:"0",piWanted:"1",piAutoClasses:"",piNocDisabled:"", 
      piCtrlPacketSize:'50',piTestInterval:'0',piProbeInterval:'',piProbeCount:'', 
     piMOSCodec:'0',pimosSLA:'3.5',piSLAPacketLoss:'0.05',piSLAJitter:'20' 
    }, 
    errors: [ 

    ] 
} 
</script> 

我的jQuery看起來是這樣的:

$.ajax({ 
        type: "GET", 
        url: requestString, 
      dataType: 'script', 
        success: function(data){ 
        .....do stuff...... 
        } 
}); 

?我怎樣才能在responseObj因爲我無法更改遺留系統的響應格式?

+0

它看起來像你必須編寫自己的解析器,因爲它看起來像JSON,但成功:('0'=='0')'不是有效的json ans,所以'cfgInfo:'因爲「(應該是這樣的:''cfgInfo」'。有關json的更多信息請看這裏http://en.wikipedia.org/wiki/JSON – ITroubs 2011-04-05 10:34:07

+0

這裏是我發現的一個解析器:http:// www。 thespanner.co.uk/2009/01/22/jsreg-javascript-parser/你也可以編寫你自己的或者只是搜索一個開源的解析器,你也可以使用ANTLR http://www.antlr.org/wiki/ display/ANTLR3/ANTLR3JavaScriptTarget但是你必須知道如何編寫一個EBNF語法。 – ITroubs 2011-04-05 10:37:04

+0

這個代碼應該可以工作,如果響應沒有''',jQuery會execute和'responseObj'會變成全局的。 – 2011-04-05 15:52:14

回答

0

感謝您的幫助 - 到底EXT-JS給我的答案:使用 VAR響應

=的eval( 「(」 +數據+ ')'); 處理響應串產生的JavaScript對象 - 那麼我就可以直接訪問屬性如下:

$.ajax({ 
    type: "GET", 
    url: requestString, 
dataType: 'script', 
    success: function(data){ 
    var response = eval("(" + data + ')'); 
     if(response.success) { 
      ...do stuff..... 
     } 
    } 
}); 

不起眼,但它的工程!