- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
Ajax GET 请求工作正常。但我必须使用 POST,因为我希望发送大量数据,对于 GET 来说太多了。
环境:Apache 2、Debian 9(从头开始)、jQuery 3.2.1,没什么特别的。
我将我的问题简化为这段代码:
客户
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="de">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>Ajaxtest</title>
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
</head>
<body>
<script language="JavaScript">
<!--
$.ajax({
url: 'ajaxtest2.php',
dataType: 'json',
contentType: 'application/json; charset=utf-8',
type: 'POST',
data: {testdata: 'here I am'},
success: function (resp) {
console.log(resp);
},
});
-->
</script>
</body>
</html>
服务器
<?php
ini_set('error_reporting', E_ERROR);
header('Content-type: application/json');
header('HTTP/1.1 200 OK');
print json_encode(
array(
'method'=>$_SERVER['REQUEST_METHOD'],
'get'=>$_GET['testdata'],
'post'=>$_POST['testdata'])
);
exit();
?>
当通过 GET 发送 ajax 调用时,我只更改
type: 'POST'
到
type: 'GET'
这在控制台上给了我这个结果:
{method: "GET", get: "here I am", post: null}
这是你所期望的。
但是当通过 POST 调用时我得到:
{method: "POST", get: null, post: null}
服务器理解 POST 请求但不传递任何值。
我尝试了一些不同的方法来包含目标 url,结果相同
url: 'ajaxtest2.php'
url: './ajaxtest2.php'
url: './ajaxtest2.php/'
它们都没有区别:$_POST 保持为空。
我还在服务器上记录了 get_defined_vars(),但是 $_POST 保持为空并且在转储变量的任何地方都没有“我在这里”的痕迹。
没有 .htaccess 与 url 重写等混合。
我还能做什么?
最佳答案
我的评论的长答案是:
您尝试使用以下 contentType 将数据发送到服务器:
application/json; charset=utf-8
代替发送 POST 数据的默认和规范:
application/x-www-form-urlencoded; charset=UTF-8
在服务器端,它没有将 contentType 作为表单发布,而是作为 application/json
。这意味着没有数据放入 $_POST 变量供 php 使用。
GET 是另一回事,因为数据位于 URL 中,而不是正文中。
ajax 调用的编码类型应始终为 utf-8,因此这也不是问题所在。
您通常不应该希望将 json 数据发送到服务器那样。仅当您将数据发送到需要在接受时解析的原始 json 数据的应用程序时,它才适用。对于 PHP 服务器,它需要“表单数据”(否则您需要阅读 php://input
,请参阅下面底部的引用 url)。
希望这有助于消除混淆。
更多信息: http://api.jquery.com/jquery.ajax/ (内容类型信息) https://forum.jquery.com/topic/ajax-with-contenttype-application-json (最后的帖子很有帮助)
关于php - AJAX,GET ok,POST 不行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47393616/
我是使用 undertow 的新手,我正在开发一个独立的应用程序,它将用作嵌入式服务器。我希望我可以在我的嵌入式 undertow 中部署 web sockets、servlets 和 restful
有谁知道为什么这不起作用,今天有 2 个答案的组合。我只是想让传递的参数显示在警报中,其他一切都有效,所以忽略 url 操作等 $('#changetopicss').click(function (
我需要在用户在 input 中输入数据后更新 div,但我不能。 div 出现,但随后消失。 我的代码: 函数.js window.onload = function(){ var mydata =
我有一个包含一堆 java 项目的工作区。如果我转到文件->刷新,它不会真正刷新任何内容(可能是当前选择的项目)。如何让 Eclipse 刷新所有项目? 最佳答案 它确实只会刷新当前项目(或者更具体地
我在 makefile 中使用了 += 并尝试添加更多编译文件: 使左边的文件能正常工作:编译4个.cpp文件。 但是make the right file是不行的,只能编译main.o和xmluti
下面的代码应该打印 3 个人,但实际上打印了 4 个人,为什么?Person("a", 1) 和 Person("a", 4) 应该被视为相同,但它们不是。 import java.util.Tree
$ testem ci not ok 1 PhantomJS - Browser "phantomjs /home/ubuntu/.nvm/v0.10.12/lib/node_modules/test
我有一个 JavaScript 函数,它没有给出我想要的结果。 这是代码(它是 JavaScript 函数的一部分): alert("yes"); // This
我在一些ajax内容之后将一些数字放入输入字段中,当我尝试让该字段将其作为脚本数据粘贴到uploadify中时,它会粘贴空字符串,但是如果我在输入字段中输入相同的值并尝试将 uploadify 中的字
我有这个表 文章 文章ID 文章名称 文章数量 文章_价格 文章数量 订单 orders_id 文章_id 发票 ID 客户 ID 客户 customers_id 客户名称 客户位置 客户办公室 客户
我正在尝试一种 SQL 注入(inject): http://localhost/test/mysql.php?uid=1;%20DROP%20TABLE%20test 此 URL 应等于语句: SE
假设你有这样一个类 public class Foo { public int Bar { get; set; } = 42; } 如果您尝试将属性作为 ref 参数传递,编译器会发出错误 CS
我已经实现了 block UI,因为当 ajax 请求开始时,此请求可能需要一点时间,一切都会按预期工作。 但是当 ajax 请求完成并显示消息框时,UI 不会解除阻止! 有什么想法吗? 我使用的是
首先,对这个非描述性的标题感到抱歉,我太匆忙了,所以无法想出更好的标题。 第二: 我的数据库的一部分如下图所示: 我的系统上有贡献者,每个贡献者都写入多个源,并且一个源可以有许多正在工作的贡献者。用户
这个问题在这里已经有了答案: Why can't you use the keyword 'this' in a static method in .Net? (7 个答案) 关闭 9 年前。 这来
var allRows = this.getTbodyEl().rows; for (var i = allRows.length - 1; i >= 0; i--){ var thisRowID
我正在尝试连接到 MAMP Pro 上托管的 MYSQL 服务器。我正在尝试使用 java 和 VBA 从同一台客户端计算机进行连接。 VBA 连接正常,但 java 在几秒钟后给出错误 com.my
我有一个将 SVG 下载为 PNG 的功能。它在 Chrome 中运行良好,但在 Firefox 中不会触发下载。需要改变什么? function downloadGraph(contextDivId
我刚刚开始使用 Gulp,但我似乎无法让它工作。当我运行常规 sass 命令时,一切都编译得很好。 这是我的 Gulp 文件: //Gulp Dependencies var gulp = requi
Ajax GET 请求工作正常。但我必须使用 POST,因为我希望发送大量数据,对于 GET 来说太多了。 环境:Apache 2、Debian 9(从头开始)、jQuery 3.2.1,没什么特别的
我是一名优秀的程序员,十分优秀!