2015-05-23 4 views
0

У меня есть следующий вызов ajax, где я передаю данные в формате JSON, и когда этот код выполняется, я получаю приведенную ниже ошибку, я показал Console.log (data_cp) ниже, и я подтверждено его в http://jsonlint.com/ и это подтверждено вход, что я здесь отсутствует, как исправить эту ошибку, я посмотрел на другие должности, как json parsing error syntax error unexpected end of input но не мог понять ...JSON SyntaxError: Неожиданный конец ввода

 $.ajax({ 
      dataType: "json", 
      type: "POST", 
      contentType: "application/json",//note the contentType defintion 
      url: "scripts/cherrypick.py", 
      data: JSON.stringify(data_cp), 
      //data: data_cp, 
      error : function (xhr, ajaxOptions, thrownError){ 
       alert(xhr.status); 
       alert(thrownError); 
      }, 
      success: function(message){ 
       console.log("cherypick sucess");   
      } 

Serverside питон скрипт: -?

#!/usr/bin/python 
import os 
import sys 
import json 
print "Content-type: application/json\n\n" 
............... 
............... 
def main(): 
    result = {'success':'true','message':'The Command Completed Successfully'} 
    cherrypicklist = [] 
    cherrypickfaillist = [] 
    myjson = json.load(sys.stdin) 
    gerritlist = myjson['gerrits'] 
    resource = r'buildserver' 
    buildlocation = r'cd /local/mnt/workspace/user/buildlocation ; ' 
    for gerrit in gerritlist: 
     cmd = buildlocation 
     project,ref = fetchgerritproject(gerrit, connection=None) 
     proj_path = getprojectpath(project) 
     cmd += 'cd ' + proj_path + ' ;' 
     new_cmd = ' gknife am-or-cp ' + gerrit 
     pick_cmd = cmd + new_cmd  
     errorlist ='' 
     errorlist = cherrypick(resource,pick_cmd)  
     if len(errorlist) <= 2: 
      cherrypicklist.append(gerrit) 
     else: 
      chk_cmd = cmd + ' git checkout -f' 
      connection = ssh_connect(resource) 
      errorlist = execute_command(connection,chk_cmd) 
      cherrypickfaillist.append(gerrit)   

    for gerrit in cherrypicklist: 
     cmd = buildlocation 
     project,ref = fetchgerritproject(gerrit, connection=None) 
     proj_path = getprojectpath(project) 
     cmd += ' cd ' + proj_path + ' ;'  
     errorlist = resetgerrit(resource,cmd) 

    errorlist = execute_command(connection,chk_cmd) 
    print json.dumps(result) 
    #return 

if __name__ == "__main__": 
    main() 

Ошибка: -

SyntaxError: Unexpected end of input 

console.log (data_cp) Выход: -

{"gerrits":["1258565","1279604"]} 
+1

Вы получаете ошибку в JQuery или питона сценария? – codesnooker

+0

Не уверен, что я понял, есть ли у вас проблемы с объективом для JSON с javascript, и если да, то что делает с ним вызов ajax? Если вы удалите все, кроме 'JSON.stringify (data_cp)', вы все равно получите ту же ошибку? – adeneo

+0

@codesnooker - Он исходит из 'alert (xhr.status); alert (thrownError) ', если я прокомментирую это, ошибка идет, но вызов не имеет успеха: функция либо – user2125827

ответ

2

Согласно определению метода ошибки из Jquery документации, вы получите сообщение об ошибке со стороны сервера или если вызов не удается.

Значит, вы получаете ошибку от сервера. Проверьте код сервера.

Определение метода ошибок из JQuery

error Type: Function(jqXHR jqXHR, String textStatus, String errorThrown) A function to be called if the request fails. The function receives three arguments: The jqXHR (in jQuery 1.4.x, XMLHttpRequest) object, a string describing the type of error that occurred and an optional exception object, if one occurred. Possible values for the second argument (besides null) are "timeout", "error", "abort", and "parsererror". When an HTTP error occurs, errorThrown receives the textual portion of the HTTP status, such as "Not Found" or "Internal Server Error." As of jQuery 1.5, the error setting can accept an array of functions. Each function will be called in turn. Note: This handler is not called for cross-domain script and cross-domain JSONP requests. This is an Ajax Event.

+0

Я обновил скрипт python на стороне сервера. Дело в том, что у меня есть переменная 'result = {'success': 'true', 'message': 'Command Completed Successfully'}' в формате JSON и, в конце концов, я пытаюсь для 'print json.dumps (result)', так что сценарий выводится в формате JSON, по какой-то причине печать не работает. Это работало для меня в предыдущих случаях, не знаете, почему это происходит сейчас? – user2125827

+0

Можете ли вы добавить чек, если вы достигли утверждения: print json.dumps (result); Если да, то какой результат, если вы не используете json.dumps, просто распечатываете результат? – codesnooker

Смежные вопросы