我有以下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"]}
答案 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事件。