gpt4 book ai didi

javascript - php 的 $_POST 中的 angularJs POST 数据

转载 作者:行者123 更新时间:2023-11-28 00:01:33 24 4
gpt4 key购买 nike

我正在从我的 AngularJS 应用程序向 php 脚本发出发布请求。我已经通过在线查找答案使其工作,但我想在 $_POST['jwt'] 变量中获取 php 脚本中的数据。

这是我的 AngularJS 代码:

var dataReq = {
method: 'POST',
url: 'http://localhost/PHP/dataSender.php',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data: { jwt: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9' }
}
$http(dataReq).success(function(response,data) {
console.log(response);
});

在我的 PHP 中,我有这个:

$postdata = file_get_contents("php://input");
$request = json_decode($postdata);
@$jwt = $request->jwt;
echo $jwt;

它正在工作,但是如果我将 Angular 请求中的 header 更改为

'Content-Type': 'application/json'

我收到 CORS 错误。

有没有办法获取 $_POST 变量中的值,因为我从未使用过这个 file_get_contents("php://input");

如何检查值是否已设置在 $_POST 中我会做这样的事情:

if(isset($_POST["jwt"]) && !empty($_POST["jwt"]))
{
echo $_POST["jwt"];
}

如何在此 file_get_contents("php://input");

中进行相同的测试

最佳答案

添加带有转换表单请求方法的 Angular js 工厂。

 'use strict';
// I provide a request-transformation method that is used to prepare the outgoing
// request as a FORM post instead of a JSON packet.
angularApp.factory(
"transformRequestAsFormPost",
function() {

// I prepare the request data for the form post.
function transformRequest( data, getHeaders ) {

var headers = getHeaders();

headers[ "Content-type" ] = "application/x-www-form-urlencoded; charset=utf-8";

return( serializeData( data ) );

}


// Return the factory value.
return( transformRequest );


// ---
// PRVIATE METHODS.
// ---


// I serialize the given Object into a key-value pair string. This
// method expects an object and will default to the toString() method.
// --
// NOTE: This is an atered version of the jQuery.param() method which
// will serialize a data collection for Form posting.
// --
// https://github.com/jquery/jquery/blob/master/src/serialize.js#L45
function serializeData( data ) {

// If this is not an object, defer to native stringification.
if ( ! angular.isObject( data ) ) {

return( ( data == null ) ? "" : data.toString() );

}

var buffer = [];

// Serialize each key in the object.
for ( var name in data ) {

if ( ! data.hasOwnProperty( name ) ) {

continue;

}

var value = data[ name ];

buffer.push(
encodeURIComponent( name ) +
"=" +
encodeURIComponent( ( value == null ) ? "" : value )
);

}

// Serialize the buffer and clean it up for transportation.
var source = buffer
.join( "&" )
.replace( /%20/g, "+" )
;

return( source );

}

}
);


// -------------------------------------------------- //
// -------------------------------------------------- //


// I override the "expected" $sanitize service to simply allow the HTML to be
// output for the current demo.
// --
// NOTE: Do not use this version in production!! This is for development only.
angularApp.value(
"$sanitize",
function( html ) {

return( html );

}
);

添加表单保存 Controller 并在 Controller 文件中使用转换表单请求和 header 。

 angularApp.controller('saveFormCtrl', function($scope, $http, transformRequestAsFormPost) {   
$http({
transformRequest: transformRequestAsFormPost,
method : 'POST',
url : 'save.php',
data: {
jwt: $scope.jwt,
},
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
}
}).success(function(res){
}
});

关于javascript - php 的 $_POST 中的 angularJs POST 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31758630/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com