2014-01-24 97 views
1

這是我寫的獲取ajax響應的腳本。在jquery中解析ajax響應

<script> 
     $(document).ready(function() 
     { 
     $("#log").click(function(){ 
     alert('hellow'); 
     $.ajax({ 
      url: "http://1xx.1xx.0.1xx:8081/script.login", 
      type: "GET", 
      data: { 'page':'create_user', 'access':'user','username':'user', 'password':'user'}, 
      dataType: "html" 
     }).done(function(resp) { 

      console.log(resp); 

       var $response = $(resp); 

     }); 
     }); 

     }) 
    </script> 

這就是ajax響應主體的樣子。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html> 
    <head> 
     <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" > 
     <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" > 
     <meta http-equiv="refresh" content="900" > 
     <title>Toronto Raptors</title> 
     <link href="Html/Panel/ControlPanelStyle.css" rel="stylesheet" type="text/css"> 




     <!--THIS WILL SUPPRESS ALL ERROR POPUPS--> 
     <script type="text/javascript"> 
     <!-- 
      var debugMode = false; //turns on error messages for windows and grids ->false = production build 

      //Hide all window errors 
      if(debugMode == true){ 
       function silentErrorHandler() {return true;} 
       window.onerror=silentErrorHandler; 
      } 
     //--> 
     </script> 


     <style type="text/css"> 
     body { 
      margin: 0px; 
      padding: 0px; 
      position: absolute; 
      width: 100%; 
      height: 100%; 
      background: #244A77; 

     } 
     a img { 
      text-decoration: none; 
      border: 0 none; 
     } 

     Html, body { 
      Overflow:hidden; 
     } 
     font.text { 
      visibility:visible; 
     } 



    #pageContainer{ 
     width: 100%; 
     height: 100%; 
     background: 244A77; /* for non-css3 browsers */ 
     filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#244A77', endColorstr='#7DA7D9'); /* for IE */ 
     background: -webkit-gradient(linear, left top, left bottom, from(244A77), to(7DA7D9)); /* for webkit browsers */ 
     background: -moz-linear-gradient(top, #244A77, #7DA7D9); /* for firefox 3.6+ */ 
    } 

       /*CSS for resizing counter Widgets*/ 
     div#counter2containercontainer {position:absolute; width:100%; height:100%; margin: 0px auto; text-align:center; overflow:hidden; text-align: center; } 
     div.counter2container {position: relative; overflow: hidden; margin: 0px auto; border: none; font-family: Verdana, Geneva, Tahoma, sans-serif; font-weight: bold; text-align:center; vertical-align:middle; z-index: 4; width: 100%; height: 100%;} 
     div#counter5containercontainer {position:absolute; width:100%; height:100%; margin: 0px auto; text-align:center; overflow:hidden; text-align: center; } 
     div.counter5container {position: relative; overflow: hidden; margin: 0px auto; border: none; font-family: Verdana, Geneva, Tahoma, sans-serif; font-weight: bold; text-align:center; vertical-align:middle; z-index: 4; width: 100%; height: 100%;} 
     div#counter10containercontainer {position:absolute; width:100%; height:100%; margin: 0px auto; text-align:center; overflow:hidden; text-align: center; } 
     div.counter10container {position: relative; overflow: hidden; margin: 0px auto; border: none; font-family: Verdana, Geneva, Tahoma, sans-serif; font-weight: bold; text-align:center; vertical-align:middle; z-index: 4; width: 100%; height: 100%;} 
     div#counter11containercontainer {position:absolute; width:100%; height:100%; margin: 0px auto; text-align:center; overflow:hidden; text-align: center; } 
     div.counter11container {position: relative; overflow: hidden; margin: 0px auto; border: none; font-family: Verdana, Geneva, Tahoma, sans-serif; font-weight: bold; text-align:center; vertical-align:middle; z-index: 4; width: 100%; height: 100%;} 


     </style > 


      <!-- general window handling --> 
      <link rel="stylesheet" type="text/css" href="../../dhtmxSuite/dhtmlxWindows/codebase/dhtmlxwindows.css" /> 
      <link rel="stylesheet" type="text/css" href="../../dhtmxSuite/dhtmlxWindows/codebase/skins/dhtmlxwindows_dhx_skyblue.css" /> 
      <script type="text/javascript" src="../../dhtmxSuite/dhtmlxWindows/codebase/dhtmlxcommon.js"></script> 
      <script type="text/javascript" src="../../dhtmxSuite/dhtmlxWindows/codebase/dhtmlxwindows.js"></script> 
      <script type="text/javascript" src="../../dhtmxSuite/dhtmlxWindows/codebase/dhtmlxcontainer.js"></script> 

      <!--Tree - Used for Triggers --> 
      <link rel="stylesheet" type="text/css" href="../../dhtmxSuite/dhtmlxTree/codebase/dhtmlxtree.css" /> 
      <script type="text/javascript" src="../../dhtmxSuite/dhtmlxTree/codebase/dhtmlxcommon.js"></script> 
      <script type="text/javascript" src="../../dhtmxSuite/dhtmlxTree/codebase/dhtmlxtree.js"></script> 


      <!--acordian Used for Triggers and Healtcare --> 
      <script type="text/javascript" src="../../dhtmxSuite/dhtmlxAccordion/codebase/dhtmlxcommon.js"></script> 
      <script type="text/javascript" src="../../dhtmxSuite/dhtmlxAccordion/codebase/dhtmlxaccordion.js"></script> 
      <link rel="stylesheet" type="text/css" href="../../dhtmxSuite/dhtmlxAccordion/codebase/skins/dhtmlxaccordion_dhx_skyblue.css" /> 
      <script type="text/javascript" src="../../dhtmxSuite/dhtmlxAccordion/codebase/dhtmlxcontainer.js"></script> 


      <link rel="stylesheet" type="text/css" href="../../dhtmxSuite/dhtmlxMenu/codebase/skins/dhtmlxmenu_dhx_skyblue.css" /> 
      <script src="../../dhtmxSuite/dhtmlxMenu/codebase/dhtmlxcommon.js"></script> 
      <script src="../../dhtmxSuite/dhtmlxMenu/codebase/dhtmlxmenu.js"></script> 



      <!--Other Header Files Required--> 


    <!--JAVASCRIPT to autore-size counter widgets--> 
    <script type="text/javascript"> 
    //$(document).ready(function() { 

     function divresize(counterName) { 
      //alert("RIZSE1"); 
      var containerName = '.' + counterName + 'container' 
      var secondContainer = '#' + counterName + "containercontainer"; 

      var contentwidth = $(secondContainer).width(); 
      var contentheight = $(secondContainer).height();  
       $(containerName).css('width',contentwidth) 
       $(containerName).css('height',contentheight); 

       //Better ReSize Attempt... 

       //Determine Character Width 
       /*var elem = document.getElementById(counterName +"_Value"); 
       var currentText = elem.innerHTML; 
       var widthMultiplier = 1; 
       if(currentText.length > 1){ 
        widthMultiplier = (currentText.length); 
        contentwidth = contentwidth/(widthMultiplier); 
       }*/ 


       //Make the size the same as the smaller of the two dimensions 

       if(contentwidth < contentheight){ $('#' + counterName+ '_Value.text').css('font-size',contentwidth/(1.3)); } 
       else{ $('#' + counterName+ '_Value.text').css('font-size',contentheight/(1.3)); } 
       //alert("RIZSE"); 



     } 
    </script> 



     <!-- dhtmlxGrid --> 
     <script type="text/javascript" src="../../dhtmxSuite/dhtmlxGrid/codebase/dhtmlxgrid.js"></script> 
     <script type="text/javascript" src="../../dhtmxSuite/dhtmlxGrid/codebase/dhtmlxgridcell.js"></script> 
     <script type="text/javascript" src="../../dhtmxSuite/dhtmlxGrid/codebase/ext/dhtmlxgrid_ssc.js"></script> 
     <link rel="STYLESHEET" type="text/css" href="../../dhtmxSuite/dhtmlxGrid/codebase/dhtmlxgrid.css"> 
     <link rel="stylesheet" type="text/css" href="../../dhtmxSuite/dhtmlxGrid/codebase/skins/dhtmlxgrid_dhx_skyblue.css"> 

     <!--dhtmlxCharts Required--> 
     <link rel="STYLESHEET" type="text/css" href="../../dhtmxSuite/dhtmlxChart/codebase/dhtmlxchart.css"> 
     <script type="text/javascript" src="../../dhtmxSuite/dhtmlxChart/codebase/dhtmlxchart.js"></script> 
     <!--Javascript For Speedo and/or Counter Required--> 
     <script type="text/javascript" src="WidgetFiles/jquery.speedometer-1.0.4/jquery-1.4.min.js"></script> 
     <script type="text/javascript" src="WidgetFiles/jquery.speedometer-1.0.4/jquery.speedometer.js"></script> 
     <script type="text/javascript" src="WidgetFiles/jquery.speedometer-1.0.4/jquery.jqcanvas-modified.js"></script> 
     <script type="text/javascript" src="WidgetFiles/jquery.speedometer-1.0.4/excanvas-modified.js"></script> 




    </head> 

<!--<body onload="doOnLoad();" style="background-image: url('../../dhtmxSuite/images/BannerTileBackground.gif'); background-repeat: repeat-x; background-color: #87AEC5;" >--> 
    <body onload="doOnLoad();" > 





    <div id="pageContainer"> 



    <div id="counter2_div"> 
    <div id="counter2containercontainer"> 
    <div class="counter2container"><font class="text" id="counter2_Value"></font></div> 
    </div> 
    </div> 
    <div id="counter5_div"> 
    <div id="counter5containercontainer"> 
    <div class="counter5container"><font class="text" id="counter5_Value"></font></div> 
    </div> 
    </div> 
    <div id="counter10_div"> 
    <div id="counter10containercontainer"> 
    <div class="counter10container"><font class="text" id="counter10_Value"></font></div> 
    </div> 
    </div> 
    <div id="counter11_div"> 
    <div id="counter11containercontainer"> 
    <div class="counter11container"><font class="text" id="counter11_Value"></font></div> 
    </div> 
    </div> 
    <div id="pie_medium6_div" style="width:100%;height:100%;position:absolute"></div> 
     <div id="speedometer4_div" style="width:100%;height:100%;position:relative;left:0px;top:0px">0</div> 
     <script type="text/javascript">$(function(){ $('#speedometer4_div').speedometer(); }); </script> 




<!--<div id="winVP" style="position: relative; height: 100%; margin: 0px;"></div>--> 


     <div id="triggersActive" style="width:100%;height:100%;"></div> 
     <div id="triggersHistory" style="width:100%;height:100%;"></div> 
     <div id="triggerBox" style="width:100%;height:100%;"></div> 

     <div id="pageFooter">Powered By Raptors</div> 
    </div> 

</body> 



<script type="text/javascript"> 

    var dhxWins; 
    var dhxAccord; 
    var menu; 

    var w999; 

    var triggers; 
    var showWidgets; 
    var tree; 

    //Globals needed for banner messages  
    var marqueeQueue = [""]; 
    var lastMessage = ""; 
    var lastTrigger = ""; 
    var lastFiringTriggerList = ""; 
    var marqueeCounter = 0; 
    var marqueeIndex = 0; 

    //Globals needed for initial start positions if null 
    var curTopPos = 27; 
    var curLeftPos = 0; 
    var curBottomPos = 0; 
    var windowDim = getBrowserDimensions(); 
    var maxWidth = windowDim.split(',')[0]; 
    var maxHeight = windowDim.split(',')[1]; 
    var initialLoadMode = true; 







    var warningBorderSytle = "solid 5px #FFFF00"; 
    var urgentBorderSytle = "solid 7px #FFA500"; 
    var criticalBorderSytle = "solid 10px #FF0000"; 




    function doOnLoad() { 


     //Ignore chart Errors  
     if(debugMode == false){ 
      dhtmlxError.catchError("LoadXML",function(a,b,data){ });  
     } 


     //Create a viewport and attach to existing div 
     dhxWins = new dhtmlXWindows(); 



     //dhxWins.enableAutoViewport(false); 
     //dhxWins.attachViewportTo("winVP"); 


     //Handle moving and resizing widgets... save to cookie 
     dhxWins.attachEvent("onMoveFinish", function(win){ setWindowStatusCookie(win,1); }); 
     dhxWins.attachEvent("onResizeFinish", function(win){ setWindowStatusCookie(win,1); }); 
     dhxWins.attachEvent("onFocus", function(win){ updateZIndex(win); }); 


     //dhxWins.attachEvent("onClose", function(win){ setWindowStatusCookie(win,0); }); 


     dhxWins.setImagePath("dhtmxSuite/dhtmlxWindows/codebase/imgs/"); 



       dhxWins.attachEvent("onClose", function(win){ win.hide(); });    

       //ShowWidgets Window 
       showWidgets = dhxWins.createWindow("showWidgets", 0, 30, 250, 600); 
       showWidgets.setText("Add Widget"); 
       tree = showWidgets.attachTree(); 
       tree.setSkin('dhx_skyblue'); 
       tree.setImagePath("../../dhtmxSuite/dhtmlxTree/codebase/imgs/csh_bluefolders/"); 
       tree.setOnCheckHandler(widgetTree_oncheck); 
       tree.enableCheckBoxes(true,true); 
       tree.deleteChildItems(0); 


    tree.insertNewChild(0, 'w2', "Raptors are back"); 
    tree.insertNewChild(0, 'w5', "Celtics is never the same"); 
    tree.insertNewChild(0, 'w10', "lakers are up"); 
    tree.insertNewChild(0, 'w11', "Heat is going down"); 
    tree.insertNewChild(0, 'w1', "Leafs are back"); 


</script> 

我intrested在解析出在那裏說的很底部部分

tree.insertNewChild(0, 'W2', 「猛龍回」);

由此我想分析出==>猛龍回

任何人都可以請提供一些指導或線索或幫助,我怎麼能做到這一點?我已經堅持了2天。一般來說,我對網絡開發很陌生,所以如果這是一個措辭不佳的問題,我很抱歉。

+1

那是AJAX服務失控的編輯/更換?你只應該以易於使用的形式(例如JSON字符串)從它返回你需要的東西。 Ajax的想法是減少帶寬,而不是增加它:) –

+1

如果你有權訪問這個頁面(當你使用ajax後,我假設你已經這樣做了),爲什麼不從這裏刪除/更改? –

+0

所以我應該指定dataType爲JSON字符串?問題是我不能這樣做,但。這就是爲什麼我堅持這個響應機構。 – user1010101

回答

0

,如果你需要接受的結果作爲HTML像這樣的東西應該工作:

$.ajax({ 
     url: "http://1xx.1xx.0.1xx:8081/script.login", 
      type: "GET", 
      data: { 'page':'create_user', 'access':'user','username':'user', 'password':'user'}, 
      dataType: "html", 
      success: function (html) { 
       alert(/tree.insertNewChild\([^"]*"([^"]*?)"\);/g.exec(html)[1]); 
      } 
    }); 

這裏是jFiddle一個例子太多: http://jsfiddle.net/hcrM8/16/

+0

Uncaught TypeError:無法讀取null的屬性'1' 這是我在控制檯的鉻。看起來好像不太合適= – user1010101

+0

聽起來像正則表達式沒有找到任何匹配。嘗試在上述警報行之前執行console.log(html)或警報(html),並確保html字符串在該點看起來正確。 –

+0

是的,我做了一個控制檯日誌,它打印出一個類似的響應正文,正如我在原始文章中提到的。所以看起來它可能沒有正確匹配。=/ – user1010101