我正在使用角度http客户端与数据库进行交互,并且一切正常,但是当我尝试使用表单将数据发布到同一链接时,我得到的数据是未定义的。
我正在尝试对值进行编码和解码,因为我知道在发出任何POST请求和发送数据之前,我需要执行angular.toJSON方法,但这没有用。
这是我的index.php,我从该表单接收POST请求。
if (empty($action)) {
if ((($_SERVER['REQUEST_METHOD'] == 'POST')) &&
(strpos($_SERVER['CONTENT_TYPE'], 'application/json') !== false)) {
$input = json_decode(file_get_contents('php://input'), true);
$action = isset($input['action']) ? $input['action'] : null;
$subject = isset($input['subject']) ? $input['subject'] : null;
$data = isset($input['data']) ? $input['data'] : null;
}
case 'createNote':
// if I die() here, it prints the die()
if(!empty($data)) {
// if I die() here, $data is undefined.
$data = json_decode($data);
$user = $data[0];
$comment = $data[1];
$film_id = $data[2];
$lastupdated = date("Y-m-d H:i:s");
$sql = "INSERT INTO nfc_note (user, film_id, comment, lastupdated)
VALUES (:user, :film_id, :comment, :lastupdated)";
}
break;
我用来发送POST请求的表格
<form action="index.php" method="POST">
<input type="hidden" name="action" value="create">
<input type="hidden" name="subject" value="note">
<input type="hidden" name="data" value="<?php echo "['username','content', 1]"; ?>">
<input type="submit" value="Submit">
</form>
如上所述,当我使用angular的http并传递如下参数时,它可以工作:
this.createNote = function (data) {
var defer = $q.defer(),
data = {
action: "create",
subject: "note",
data: angular.toJson(data)
};
$http
.post(urlBase, data)
.success(function (response) {
defer.resolve({
data: response.data
});
})
.error(function (error) {
defer.reject(error);
});
return defer.promise;
};
使用表格时不起作用。我没有发现任何建议或错误?
您的PHP代码期望使用Json格式的数据,但没有得到。这是因为HTML表单以形式发送POST数据application/x-www-form- urlencoded
。
为了支持两种数据格式,您需要在PHP代码上构建逻辑以检测这两种格式。HTTP标头中提到了数据格式,您可以在其中进行检查。寻找Content- Type
。对于用于HTML表单的POST数据,它应该是application/x-www-form- urlencoded
,对于Json,它应该是application/json
。
您可以使用读取PHP中的表单值$_POST[<form_parameter>]
。就你而言$_POST['data']
。为了使HTML表单更简单,您还可以将data
数组拆分为表单中自己的输入。
请参阅此以获取更多信息:https :
//www.smtpeter.com/en/documentation/json-vs-
post
问题内容: 我正在尝试使用一些要设置的表单参数创建一个postHTTP请求。我正在将axios与节点服务器一起使用。我已经有一个构造URL的Java代码实现,如下所示: JAVA代码: 我正在尝试在axios中做同样的事情。 AXIOS的实现: 在邮寄请求上设置这些表格参数的方法是否正确? 问题答案: 您必须执行以下操作:
我正在尝试创建一个带有一些要设置的表单参数的postHTTP请求。我正在将axios与节点服务器一起使用。我已经有了构建url的java代码实现,如下所示: JAVA代码: 我正在axios中尝试做同样的事情。 AXIOS实施: 在post请求上设置这些表单参数的方法是否正确?
问题内容: 我正在尝试将数据从表单发送到php文件,以便可以将其存储在数据库中,但是无法正常工作… 表单的代码与php文件不在同一服务器上,因为表单将在移动应用程序上。 html php文件 谢谢!!! 问题答案: 在PHP文件的开头添加以下内容: 有关跨域策略的更多信息,请参见此处。
当浏览器请求网页时,它会向 Web 服务器发送特定信息,这些信息不能被直接读取,因为这些信息是作为 HTTP 请求的头的一部分进行传输的。您可以查看 HTTP 协议 了解更多相关信息。 以下是来自于浏览器端的重要头信息,您可以在 Web 编程中频繁使用: 头信息 描述 Accept 这个头信息指定浏览器或其他客户端可以处理的 MIME 类型。值 image/png 或 image/jpeg 是最常
如何在基于网络的 HTTP 客户端中重试 HTTP 请求? 请考虑以下处理程序,如果收到 HTTP 响应代码 503,它将尝试在 1 秒后重试 HTTP 请求: 在本例中,当我写入通道时,管道中的其他处理程序会看到HttpObjects,但实际上不会再次执行HttpRequest——只接收到一个HttpResponse。 我认为在这种情况下我只是滥用了 Channel,我需要创建一个新的通道(表示