为什么在使用JSON成功上传后会得到空值?

为什么在使用JSON成功上传后会得到空值?,json,jquery,Json,Jquery,我需要使用JQuery 1.5.2在服务器上上传一些数据。这些数据必须是base64编码的图像、浮点值和整数值。这是我的密码: 更新代码: $.ajax({ type: "POST", datatype: "json", url: "http://myURL.json", data: { id: id, image: "jhbjh", lat: 2.6, lng: 3.4}, success: function () { alert

我需要使用JQuery 1.5.2在服务器上上传一些数据。这些数据必须是base64编码的图像、浮点值和整数值。这是我的密码: 更新代码:

    $.ajax({
    type: "POST",
    datatype: "json",
    url: "http://myURL.json",
    data: { id: id, image: "jhbjh", lat: 2.6, lng: 3.4},
    success: function () {
        alert('Successfully uploaded');
    },
    error: function (jqXHR, textStatus, errorThrown) {
        alert('Error on upload: ' + textStatus + " thrown " + errorThrown);
    }
});
唯一成功上传的参数是整数值id,我觉得这很奇怪,但服务器上的其余值为null。出于测试原因,我尝试手动更改这些值(如上面代码所示),但仍然得到空值。当我的数据如下所示时,我得到空值:

data: { id: id, image: encodedImage, lat: latitude, lng: longitude},

服务器的开发人员坚持认为空值是我的代码的问题,并且服务器在多次测试后工作正常。我的错误在哪里?你能提供你的答案和部分代码给我举个例子吗

您有一些错误,首先,为什么要发送json?实际上,将json发送到web服务器是非常罕见的。因此,只需完全删除contentType的行。(除非您真的发送json,否则您将需要一些额外的代码。)

其次,不能通过ajax发送图像。我假设图像是指用户上传的文件。除非您只需要新的浏览器支持,否则您可以通过ajax使用文件API

如果需要上传文件,则必须通过隐藏的iframe方法进行上传。使用jQuery表单插件可以使这一过程变得简单


如果确实要发送json,则需要将其自己编码为字符串,并包含
processData:false

+1以捕获
contentType
问题。但是对于图像,他说图像是“base64编码图像”,或者换句话说,是一个字符串。@gilly3他说
数据必须是base64编码图像,而不是它已经是了。只是服务器希望这样。但它不是很清楚。@Ariel它已经是base64数据了,所以我想它应该不会有问题吧?还有一个She:-)@tasanoui如果是的话,那么是的,这不是问题。但是一定要检查服务器是否真的需要json,我打赌不是,所以应该删除
contentType
行。我刚刚注意到另一件事:lat和lon(您应该使用lng btw)作为字符串而不是浮点数发送。虽然这只在发送json时才重要。@Ariel我发送的字符串只是为了测试,但在我的程序中,现在我有了浮点值。我删除了contentType行,并用lng:7.8这样的值对其进行了测试,但仍然得到null。。。还有其他原因吗?