【发布时间】: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 就可以工作。