2017-02-26 106 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