【发布时间】:2015-03-30 11:11:07
【问题描述】:
我使用 core-ajax 创建了一个 Polymer 元素,通过 POST 将数据发送到 PHP 脚本。
<polymer-element name="login-process">
<template>
<core-ajax auto method="POST" id="login" url="/login.php" response="{{response}}">
</core-ajax>
<button on-tap={{doSend}}>send</button>
</template>
<script>
Polymer('login-process', {
ready: function() {
},
doSend: function() {
this.$.login.body = '{"foo": 1, "bar": 2}';
this.$.login.go();
},
responseChanged: function(oldValue) {
console.log(oldValue);
console.log(this.response);
}
})
</script>
</polymer-element>
我检查了 HTTP 请求,并验证了数据正在发送。 然而,另一方面,我的 PHP 脚本没有显示 $_POST 或 $_REQUEST 变量中的数据痕迹。这是我的 PHP 脚本的内容:
header("Cache-Control: no-cache, must-revalidate"); //HTTP 1.1
header("Pragma: no-cache"); //HTTP 1.0
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
error_reporting(E_ALL);
ini_set("display_errors", 1);
define("BASE_PATH", $_SERVER['DOCUMENT_ROOT']);
define('WP_USE_THEMES', false);
global $wp, $wp_query, $wp_the_query, $wp_rewrite, $wp_did_header;
require(BASE_PATH . '/wp-load.php');
var_dump($_POST);
var_dump($_REQUEST);
$creds = array();
$creds['user_login'] = 'example';
$creds['user_password'] = 'plaintextpw';
$creds['remember'] = true;
$user = wp_signon( $creds, false );
if ( is_wp_error($user) ) {
header("HTTP/1.0 401 Unauthorized");
echo $user->get_error_message();
exit();
}
header("HTTP/1.0 200 OK");
exit();
不是优雅的代码,我知道。但是我从脚本中得到的响应是:
array(0) { } array(0) { } 错误:用户名无效。丢失 你的密码?
所以 $_POST 和 $_REQUEST 数组是空的,而我希望它们被我提供的数据填充。
【问题讨论】:
标签: javascript php ajax wordpress polymer