在ajax POST中更正拼写

时间:2014-04-20 21:16:26

标签: ajax

我有两个代码,我认为应该做同样的事情,但第一个有效,另一个有效(Post vars:agenti,week_,team_)。我已经搜索了几个如何以其他方式做到这一点的例子,我确信我的例子是相似的。 我做错了什么?

首先:

$.post("index.html",
{
  agenti: getItems(),
  week_: week_array,
  team_: team
},
function(data,status){
  if (status = 'Success'){
    alert('Aktuální řazení operátorů bylo úspěšně uloženo.');
  } else {
    alert('Aktuální řazení operátorů se nepodařilo uložit.\nKontaktujte prosím správce aplikace.');
  }

第二

$.ajax({
    type: "POST",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    url: "index.html",
    data: JSON.stringify({agenti: getItems(), week_: week_array, team_: team}),
    success: function (msg)
    {
        alert('Aktuální řazení operátorů bylo úspěšně uloženo.')
    },
    error: function (msg)
    {
        alert('Aktuální řazení operátorů se nepodařilo uložit.\nKontaktujte prosím správce aplikace.')
    } 
  });

我想做第二个,因为我需要指定内容类型,我无法想出如何以第一种方式做到这一点。 谢谢你!

编辑:我使用IE;此代码仅在IE中使用。

1 个答案:

答案 0 :(得分:0)

所以第一件事是,不需要使用JSON.stringify函数,因为data接受JSON对象,以及表示为url的字符串(test1 = 1& test2 = 2 .. )。所以使用它就好像以下一样。

data: {agenti: getItems(), week_: week_array, team_: team},

当您使用contentType时:' application / json'没有填充GLOBAL $ _POST变量,因为它仅为form-urlencoded数据填充contentType数据,这是{jQuery reference`的数据。

contentType (default: 'application/x-www-form-urlencoded; charset=UTF-8')

为了您想使用application/json,您可以使用PHP输入在PHP端检索该信息,如下所示。 file_get_contents('php://input');

---工作实例---

使用Javascript:

$.ajax({
    type: "POST",
    // contentType: "application/json; charset=utf-8",
    dataType: "json",
    url: "http://localhost",
    data: {agenti: 'test1', week_: 'test2', team_: 'test3'},
    success: function(msg) {},
    error: function(msg) {}
});

PHP:

// Retrieve the input
var_dump(file_get_contents('php://input'));
// Use $_POST var
echo json_encode($_POST);