繁体   English   中英

将数据传递到jquery的getJSON()时出现问题-将不接受映射

[英]Problems passing data to jquery's getJSON() - Will not accept map

我正在尝试序列化表单(JSP / Struts 1.1)并将其放入对象或地图或jQuery的.getJSON()方法所需的任何内容。 这是我的js代码:

// This function makes an AJAX call, passing the entire form to the Action class
function ajaxCallWithForm(inputURL, formName, onReturnFunction)
{
    var formAsMap = serializeForm(formName);     
    $.getJSON(inputURL, formAsMap, onReturnFunction);
}

function serializeForm(formName)
{
    var obj = {};
    var a = $('#'+formName).serializeArray();

    $.each(a, function() {
        if (obj[this.name] !== undefined) {
            if (!obj[this.name].push) {
                obj[this.name] = [obj[this.name]];
            }
            obj[this.name].push(this.value || '');
        } else {
            obj[this.name] = this.value || '';
        }
    });

    return obj;
}

这会在后端导致java.lang.IllegalArgumentException (与BeanUtils.populate servlet方法有关)。

如果我将.getJSON()调用的3个参数中的第2个设置为类似的形式,它将正常工作,并且数据将显示在Java后端的form对象中:

// This function makes an AJAX call, passing the entire form to the Action class
function ajaxCallWithForm(inputURL, formName, onReturnFunction)
{
    $.getJSON(inputURL, {"vehicleKeyNum":12345,
                         "vehicleID":"12345",
                         "rand":Math.random()}, 
        onReturnFunction);
}

我也尝试过使用适当的语法创建一个字符串,该字符串包括来自表单的数据,并且产生相同的结果。 我可能对此有错误的语法。 无论如何,我的主要问题是:

1).getJSON()方法接受“与请求一起发送到服务器的映射或字符串”。 作为其第二个参数(请参见http://api.jquery.com/jQuery.getJSON/

2)我通过了我认为是“地图”的内容

3)我收到一个java.lang.IllegalArgumentException ,不知道从这里去哪里

如果要向服务器提交表单,则只需使用jQuery的serialize()serializeArray()方法即可。

$.getJSON(inputURL, $(formName).serialize(), onReturnFunction); 

如果元素名称正确匹配,则应该在窗体bean中填充由serialize / serializeArray方法返回的数据。

这是序列化方法的有效示例 (从jQuery网站复制)

BeanUtils.populate servlet方法中的java.lang.IllegalArgumentException是由于提交的数据和表单Bean上的数据之间的数据类型不匹配。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM