JSON SyntaxError:意外的输入结束

时间:2015-05-23 00:06:48

标签: javascript python json

我有以下ajax调用,其中我以JSON格式传递数据,当执行此代码时,我得到下面显示的错误,我在下面显示了Console.log(data_cp)并在{{3}中验证了它这是一个经过验证的输入?我在这里缺少什么?如何解决这个错误?我查看了其他帖子,如http://jsonlint.com/,但无法弄明白......

        $.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 python脚本: -

#!/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 个答案:

答案 0 :(得分:2)

根据Jquery文档中的错误方法定义,您从服务器端获得错误或者如果调用不成功。

因此,这意味着您从服务器收到错误。检查服务器代码。

JQuery中Error方法的定义

  

错误类型:函数(jqXHR jqXHR,String textStatus,String   errorThrown)请求失败时要调用的函数。该   函数接收三个参数:jqXHR(在jQuery 1.4.x中,   XMLHttpRequest)对象,一个描述错误类型的字符串   发生了,并且发生了一个可选的异常对象。可能   第二个参数的值(除了null)是“超时”,“错误”,   “abort”和“parsererror”。发生HTTP错误时,errorThrown   接收HTTP状态的文本部分,例如“未找到”   或“内部服务器错误”。从jQuery 1.5开始,错误设置可以   接受一系列功能。每个函数将依次调用。   注意:不会为跨域脚本调用此处理程序   跨域JSONP请求。这是一个Ajax事件。