Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过ajaxsetup使用附加参数发布表单序列化数据_Javascript_Jquery_Ajax_Model View Controller - Fatal编程技术网

Javascript 通过ajaxsetup使用附加参数发布表单序列化数据

Javascript 通过ajaxsetup使用附加参数发布表单序列化数据,javascript,jquery,ajax,model-view-controller,Javascript,Jquery,Ajax,Model View Controller,我正在使用$.ajax提交表单,我想在提交中添加一个键值对,它不是表单输入的一部分,并且对我的所有表单都是通用的。 所以我计划将公共部分移动到ajaxsetup。 我希望将它们作为两个参数接收,比如ModelData、TokenKey 我的html代码 @Html.TextBoxFor(m=>m.Name) 使用jQuery serialize()函数时,它只需将表单转换为a=1&b=2&c=3格式的字符串。因此,您当然可以将此函数应用于两个表单,并在它们之间使用&连接结果,并在ajax调用

我正在使用$.ajax提交表单,我想在提交中添加一个键值对,它不是表单输入的一部分,并且对我的所有表单都是通用的。 所以我计划将公共部分移动到ajaxsetup。 我希望将它们作为两个参数接收,比如ModelData、TokenKey 我的html代码


@Html.TextBoxFor(m=>m.Name)

使用jQuery serialize()函数时,它只需将表单转换为a=1&b=2&c=3格式的字符串。因此,您当然可以将此函数应用于两个表单,并在它们之间使用&连接结果,并在ajax调用中使用结果。在进行连接时,需要进行一些检查以确保两个字符串都不为空

$.post(url,{key:value,data:frm.serialize},function(){
//do somehting
})

我通常这样做既简单又容易,您可以添加任意数量的
key:value
对…

您可以在表单中添加一个名为TokenId和所需值的隐藏字段。或者,您可以像下面这样修改数据

data : fir.serialize()+"&TokenId=TokenId+Value";

注意:在追加之前,您必须对数据进行编码,如上所述

我认为这是一个很好的解决方案:

$.ajaxPrefilter(function(options, originalData, xhr){
  if (options.data)
    options.data += "&TokenId=TokenValue";
});

这将影响所有ajax调用。检查代码笔

根据文档,它为将来的Ajax请求设置默认值。它不会在
frm.serialize()中添加新的
对象我想..我可以知道为什么不将键值对存储在一个隐藏字段中,这样它也会与其他表单字段一起提交吗?最简单的方法是将名为TokenId的隐藏字段添加到表单中,并将所需值设置为该值,实际上TokenKey与我的模型无关,这是forms html属性值,我希望将其作为单独的字符串参数接收…@Nishan Senevirathna,因为这是我所有创建和编辑表单所必需的,查找通用方法…是否可以通过ajaxsetup?如果没有数据,$.ajaxPrefilter(函数(选项,原始数据,xhr){if(选项.数据)options.data+=“&TokenId=TokenValue”else如果(!options.data.length)options.data=“TokenId=TokenValue”;});