tim*_*ois 1 ajax jquery post serialization
更新:我想通了。是一个 URL 问题,它在发送到服务器之前重定向并清除了 POST。
$('#addbtn').on('click',function() {
$.ajax({
type: "POST",
url: "/create/",
dataType: "json",
data: $('#MultiAdd').serializeArray(),
success: function (data) {
// this returns Failed. Please Try Again. c_name=
// c_name should equal the value from post.
alert(data.msg)
},
error: function (xhr, ajaxOptions, thrownError) {}
});
});
Run Code Online (Sandbox Code Playgroud)
我似乎无法得到这个来发布数据。我试过很多变种。看着这个几个小时试图看看有什么问题。
我试过了data: {test:'test'}(没用)
GET 函数可以,但我需要这是 POST。我也试过普通的.serialize()。还是不行。
这确实可以向我展示这些值。但ajax不会在提交中发布它们。
console.log($('#MultiAdd').serializeArray());
Run Code Online (Sandbox Code Playgroud)
(在页面上,表单和ajax代码是动态添加的,但我认为不会有太大变化,我已经测试过了。)
更新:(我正在使用 codeigniter) - 服务器端。试图访问 [input name="c_name"]
public function create()
{
$value = $this->input->post('c_name');
$msg = array("msg"=>"Failed. Please Try Again. c_name=".$value);
die(json_encode($msg));
}
Run Code Online (Sandbox Code Playgroud)
如果 GET 请求有效但 POST 无效,则通常是重定向的问题。也就是说,当请求最初访问第一个 URL 并被重定向到另一个 URL 时,所有 POST 数据都没有转发到另一个 URL。因此,所有数据都会丢失。
可能发生的一些常见情况(取决于服务器配置):
你明白了。如果您查看网络面板并注意到没有发送数据但响应为 200 OK,那么检查网络面板中的请求 URL是否是您在代码中指定的URL是个好主意。虽然这只能在现代浏览器中实现。在较旧的浏览器中,您甚至不会知道 URL 已被重定向。
例如(请参阅我的请求网址中缺少“en/”):

尝试添加contentType到application/x-www-form-urlencoded
$.ajax({
type: "POST",
url: "/create/",
dataType: "json",
data: $('#MultiAdd').serializeArray(),
contentType: "application/x-www-form-urlencoded",
success: function (data) { //success },
error: function (xhr, ajaxOptions, thrownError) { //some sort of error }
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10906 次 |
| 最近记录: |