ajax post不发送数据

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)

Hrv*_*cic 6

如果 GET 请求有效但 POST 无效,则通常是重定向的问题。也就是说,当请求最初访问第一个 URL 并被重定向到另一个 URL 时,所有 POST 数据都没有转发到另一个 URL。因此,所有数据都会丢失。

可能发生的一些常见情况(取决于服务器配置):

  • “/method/”可能会被您的站点重定向到“/somethingCompletelyElse/”
  • “/method”可能会被您的站点重定向到“/en/method”(语言重定向)
  • “方法/”可能会被您的网站重定向到“方法”
  • “方法”可能会被您的网站重定向到“方法/”(常见的额外反斜杠)
  • “example.com/method”可能会被您的网站重定向到“www.example.com/method”

你明白了。如果您查看网络面板并注意到没有发送数据但响应为 200 OK,那么检查网络面板中的请求 URL是否是您在代码中指定的URL是个好主意。虽然这只能在现代浏览器中实现。在较旧的浏览器中,您甚至不会知道 URL 已被重定向。

例如(请参阅我的请求网址中缺少“en/”): 在此处输入图片说明


Ofe*_*ear 5

尝试添加contentTypeapplication/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)