【问题标题】:How to use $.ajax with then()?如何将 $.ajax 与 then() 一起使用?
【发布时间】:2019-08-27 09:39:27
【问题描述】:

我使用 AJAX 将一些数据发送到我的 apache/php 网络服务器 (XAMPP)。 我已经使用简写语法 $.post 运行它,代码如下所示:

return $.post('http://localhost:8099/login.php', {
      loginDataInput : loginDataInput
    }).then((response) => {
      //response = JSON.parse(response)
      return response
    })

但现在我尝试使用长格式 $.ajax,如下所示:

return $.ajax({
      type:"POST",
      url: 'http://localhost:8099/login.php',
      data: loginDataInput
  }).then((response) => {
    return response
  })

而且它似乎不起作用。 我在 php 端调试了 $_POST 数组,数据输入本身发生了变化,当我使用 $.ajax 语法时,点变成了下划线(见下文)。我该如何预防?

$_POST 数组在使用 $.post 语法的 AJAX 调用后通过 json_encode 回显:

{"loginDataInput":"{\"loginDataMailInput\":\"gruss@imbus.de\",\"loginDataPasswordInput\":\"test2\"}"}

$_POST 数组在使用 $.ajax 语法的 AJAX 调用后通过 json_encode 回显:

{"{\"loginDataMailInput\":\"gruss@imbus_de\",\"loginDataPasswordInput\":\"test2\"}":""}

对于我的 $.ajax 版本,我使用了 jquery Doc https://api.jquery.com/jQuery.post/ 这向我展示了 $.ajax 相当于 $.post 的简写。 我省略了数据类型,因为我想使用智能猜测。也许这就是问题所在?

【问题讨论】:

  • @t.niese 好的,但是如果它是服务器端,为什么它会受到我在前端进行 AJAX 调用的方式的影响?真的,如果我使用 $.post 速记,服务器端的一切看起来都很好!
  • 尝试将 data: loginDataInput 更改为 data: { loginDataInput: loginDataInput } 并告诉我们它发生了什么变化
  • 可以在ajax请求中添加dataType: "json"
  • @designtocode 这与数据类型属性无关。 datatype 指定预期的返回值。我将 contentType 指定为“json”,但由于某种原因,我得到了一个 CORS 错误,告诉我相同的源策略不允许读取远程源。如果我使用 application/x-www-form-urlencoded、multipart/form-data 或 text/plain 作为 contentType 或将其保留为默认值,CORS 就可以工作。

标签: jquery ajax


【解决方案1】:

loginDataInput 需要在对象内部。

return $.ajax({
      type:"POST",
      url: 'http://localhost:8099/login.php',
      data: {
        loginDataInput: loginDataInput
      }
  }).then((response) => {
    return response
  })

【讨论】:

  • 这是不正确的。 data 可以根据文档 api.jquery.com/jQuery.post 接受对象或字符串。所以它“不需要”在对象内部。
  • @designtocode 我想你跳过了inside这个词。措辞可能不太好,但他是对的,如果 OP 想要 ajax 中的数据格式与 post 的先前版本相同,那么这就是需要做的事情
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-08
  • 2018-07-05
  • 2017-01-24
  • 2015-02-02
  • 2014-09-02
  • 1970-01-01
  • 2023-03-18
相关资源
最近更新 更多