2017-02-26 48 views
0

我的Ajax請求代碼:意外的令牌':'。解析錯誤。在AJAX響應

$(window).ready(function() { 
    var $form = $(document).find('#name-form'); 
    var $display = $(document).find('#display'); 
    $form.on('submit', function (e) { 
     e.preventDefault(); 
     var name = $form.find('#name').val(); 
     var surname = $form.find('#surname').val(); 
     var patronymic = $form.find('#patronymic').val(); 
     var year = $form.find('#year').val(); 
     var request = $.ajax({ 
      headers: { 
      'Content-Type': 'application/x-www-form-urlencoded' 
      }, 
      dataType: 'jsonp', 
      method: 'get', 
      jsonp: false, 
      jsonpCallback: "localJsonpCallback", 
      url: 'http://127.0.0.1:8885/search?app=potato', 
      data : { 
       name: name, 
       surname: surname, 
       patronymic: patronymic, 
       year: year, 
      } 
     }); 
    function localJsonpCallback(json) { 
      if (!json.Error) { 
       $('#display').submit(); 
      } 
      else { 
       $('#display').show(); 
       alert(json.Message); 
      } 
     } 
    }); 
}); 

此代碼發送請求,這是肯定的。但是當它得到JSON時,控制檯寫入一個錯誤Unexpected token ':'. Parse error.我只需要顯示這個json或它的內容在div中。

響應JSON是:

{ 
    "Report": "http://127.0.0.1:8099/chicken/eggs.html", 
    "Exist": true 
} 

問題是什麼?

+0

請表明生成JSON的代碼。 – Ouroborus

+0

請顯示您發送的數據的值。 – abc123

+0

JSON由應用程序Sikuli在完成作業後生成。在問題中,我展示了它返回的內容(從郵遞員複製)。 RAW響應:'{「報告」:「http://127.0.0.1:8099/chicken/eggs.html」,「存在」:true}'。你認爲JSON有些混亂嗎?儘管如此,我想。 –

回答

2

你告訴您要JSONP的jQuery但服務器返回的JSON。

由於jQuery的如何處理JSONP,正常的JSON被視爲儘管它的JavaScript,因此你收到的錯誤實際上是由瀏覽器的JavaScript解釋器拋出一個語法錯誤。

+0

是的,我使用JSONP來避免跨域錯誤。我應該怎麼做才能解決這個問題? –

+1

@SamBronson如果您或與您相關的人正在創建服務器端代碼,那麼您需要允許其識別JSONP請求並返回JSONP響應。只從不支持它的服務器請求JSONP將不起作用。 – JLRishe

+1

通常,要使用來自另一臺服務器的數據,您需要顯示服務器同意您的使用。一種方法是讓服務器允許JSONP請求。既然它沒有返回JSONP格式的數據,這是行不通的。爲了使普通的JSON正常工作,您需要在服務器上啓用CORS,或者從您請求JSON的網址的相同協議/域/端口提供頁面。 – Ouroborus