2012-01-18 82 views
3

我正在嘗試使用solr和jquery一起進行自動建議。爲此,我寫了下面的代碼:意外的令牌: JSON數據我無法使用jquery解析JSON

$(函數(){

$("#artist").autocomplete({ 
     source: function(request, response) { 
      $.ajax({ 
       url: 'http://localhost:8983/solr/terms?terms.fl=heading&terms.prefix=' 
       +request.term+'&wt=json&json.nl=map', 

       dataType: "jsonp", 

       data: { 
        q: request.term, 
        rows: 10, 
        omitHeader: true, 
       }, 
       success: function(data) { 
        response($.map(data.terms.heading, function(item) { 
         return { 
          label: item, 
          value: item 
         } 
        } 
        ) 
        ); 
       } 
      }); 
     }, 

     minLength: 2, 
     select: function(event, ui) { 
      log(ui.item ? 
       "Selected: " + ui.item.label : 
       "Nothing selected, input was " + this.value); 
     }, 
     open: function() { 
      $(this).removeClass("ui-corner-all").addClass("ui-corner-top"); 
     }, 
     close: function() { 
      $(this).removeClass("ui-corner-top").addClass("ui-corner-all"); 
     } 

    }); 
}); 

我收到以下錯誤在Chrome

未捕獲的SyntaxError運行時我得到的是這種

{ 「條款」:{ 「標題」:{ 「答案」:24, 「安薩里」:5}}}

我諮詢下面的鏈接http://jqueryui.com/demos/autocomplete/#remote-jsonp但我無法找到解決方案。請建議我做錯了什麼

+0

您發佈的代碼有錯誤的「});」最後。也應該dataType:不是「json」而不是「jsonp」; – CBusBus 2012-01-18 08:15:43

+0

可能試試$ .map(data.d.terms.heading,函數(item) – 2012-01-18 08:18:03

+0

可以發佈jQuery字符串嗎? – 2012-01-18 08:39:07

回答

3

您已經(正確地?)指定JSONP訪問跨源資源,但您尚未告知Solr您希望它發出JSONP而不是純JSON。

jsonp: 'json.wrf'添加到參數$.ajax

更多在http://xplus3.net/2010/09/21/solr-and-jsonp/

+0

感謝您的回答。它的工作原理 – sid 2012-01-18 12:06:37

+0

它的jsonp:'json.wrf'而不是json:'json .wrf「。附加鏈接是正確的,但引用的答案是錯誤的 – 2015-10-16 16:51:24

+0

@BalajiNatarajan謝謝 - 更正 – Alnitak 2015-10-17 10:09:16