2017-08-28 27 views
-2

我正在向狀態/國家/地區的地理編碼發送查詢並獲取JSON響應列表。有時JSON不能正確解析。我怎麼能忽略這樣的結果,然後轉向下一個呢?如何忽略由於地理編碼中返回的JSON中的無效標記導致的語法錯誤

這裏是Ajax調用

$.ajax({ 

    url: "/abc/points", 
    context: document.body, 
    data: { 
     latitude: places[0].geometry.location 
      .lat(), 
     longitude: places[0].geometry.location 
      .lng(), 
     distance: $(
       'input[name="distance"]:checked') 
      .val(), 
     city: city1, 
     state: state1, 
     country: country1, 

    }, 
    success: function(responseText) { 
     $("#response-div").html(
      responseText); 
     $("#response-div") 
      .find("script") 
      .each(
       function(i) { 
        eval($(
          this) 
         .text()); 
       }); 
     $("html").removeClass(
      "wait"); 
    } 

}); 

有數百個結果回來,我只是希望它跳過導致語法錯誤的人,繼續前進。如果您需要,我可以發佈樣品JSON文本。

感謝

COMMENT 好吧,我沒能找出是否語法錯誤可以忽略不計。所以這是我的下一個方法。基本上它的響應被解析成JSON並且它無法忽略JSTL中的\n字符。我需要能夠用「」替代\n以及「,」。任何幫助表示讚賞。我知道有些帖子解釋瞭如何忽略其中的任何一個,但是不能同時這兩個。

function(marker, event, context) { 
          var contentString = '<div style="width:600px; height: 300px;">' + 
                '<div> <h4>' + '${fn:replace(object.name, search, replace)}' + ' </h4> </div>' + 
                '<table class="table">' + 
                 '<tbody>' + 
                 '<tr class="active">' + 
                  '<td>Address: </td>' + 
                  <c:set var="address" value="${object.stAddress} ${object.city}, ${object.state} ${object.zipcode}" /> 
                  '<td colspan=5>' + "${fn:replace(address, ",", " ")}"+"${fn:replace(address, "\n", " ")}" + '</td>' + 
                 ' </tr>' + 

編輯 我已經嘗試這樣做,雖然它的工作原理來取代它不能爲\n

<c:set var="search" value="'" /> 
<c:set var="replace" value="" /> 
<c:set var="newLn" value="\n" /> 
${fn:replace(fn:replace(address, newLn, replace), search, replace)} 
+0

也許把eval行包裝在'try ... catch'中? – yuriy636

+2

什麼JSON?您共享的代碼中沒有任何內容似乎與JSON有關。如果服務器返回一個'application/json'內容類型,那麼jQuery會自動解析它,而'responseText'會(可能)是一個對象,所以將它傳遞給'html()'方法是沒有意義的。 – Quentin

+1

「eval」聲明你在說什麼? **絕對不要使用EVAL進行PARSING JSON **。我們已經有了一個更合適,更快捷,更易於使用,更易於調試的JSON解析器[內置於瀏覽器中](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse ) 多年**。 – Quentin

回答

0

好吧,我能算出這個工作的一些其他字符。把我的解決方案放在這裏以防萬一。

<c:set var="modAdd" value="${fn:replace(origAdd,newLn, "")}" /> 

現在在我的代碼中,我只是用這個變量來執行雙重替換。

${fn:replace(modAdd, "'", "")} 
相關問題