ajax发布不发送数据

时间:2013-11-19 21:47:54

标签: jquery ajax 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) {}
 });

});

我似乎无法发布这些数据。我尝试了很多变化。看了几个小时试图看错了什么。

我试过data: {test:'test'}(没有用)

GET功能,但我需要这个POST。 我也尝试过普通的.serialize()。仍然没有工作。

这确实可以向我展示价值观。但是ajax不会在提交中发布它们。

console.log($('#MultiAdd').serializeArray());

(在页面上,表格和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)); 
 }

2 个答案:

答案 0 :(得分:4)

尝试将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 }
 });

答案 1 :(得分:4)

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

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

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

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

例如(请参阅我的请求网址中缺少“en /”): enter image description here