【问题标题】:sending json data to server returns 400 bad request向服务器发送 json 数据返回 400 错误请求
【发布时间】:2012-09-19 11:40:12
【问题描述】:

我想将我的字符串值作为 json 数据发送到服务器,但我收到 400 错误请求。 这是我如何发送数据的代码。

dataString = '{"comment":"'  +dataString+ '"}';
        dataString = '[' + dataString + ']';

         $.parseJSON(dataString);
         console.debug("After parsing : "+dataString);

        $(form_element).clearForm();
        $.ajax({
            type : "POST",
            url : loc,
            cache : false,
            data : dataString,
            dataType: 'json',
            contentType: "application/json",

            success : function(data) {
                console.debug("After success");
            }

当我调试代码时,@RequestParameter“注释”有空值。 请帮助我,在此先感谢。

【问题讨论】:

  • 可以console.debug("After parsing...");
  • 一个简单的字符串,例如(“hi david”)
  • 不是,但我的问题是,你真的设置了吗?不只是将代码作为null进行吗?
  • 我通过读取文本字段值来设置它的值并将其存储在字符串中,它是 cmets 字段,正如我们在任何用户可以在提要中使用 cmets 的网站中看到的那样。用户的评论存储在dataSting(变量)中,我将其发送到服务器以存储在数据库中。

标签: javascript jquery json post http-post


【解决方案1】:

parseJSON 函数返回一个对象。

你应该这样做

var obj = $.parseJSON(dataString);

$.ajax({
        type : "POST",
        url : loc,
        cache : false,
        data : obj,

假设你真的需要像你一样构建你的字符串。通常只构建你的对象而不是创建一个 json 字符串,解析它然后让 jQuery 再次序列化它更简单。

【讨论】:

  • dataString 中最初的内容以及服务器接收/预期的内容是什么?它想要一个数组吗?
  • 它是一个简单的字符串值,但服务器接收到空值
【解决方案2】:

我认为你应该传递 json 对象而不是 json 数组。

var dataString = '{"comment":"test"}';
    //dataString = '[' + dataString + ']';  //delete this, NOT array
var obj = $.parseJSON(dataString);
console.log(obj);

$.ajax({
    type : "POST",
    url : url,
    cache : false,
    data : obj,
    contentType:"application/json; charset=utf-8",
    dataType:"json",

    success : function(data) {
        console.debug("After success");
    }
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-07
    • 1970-01-01
    • 1970-01-01
    • 2019-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多