请原谅我发帖太多了。
当用户单击btnValidate按钮时,将调用webservice。这是代码:
$("#btnValidate").click(function() {
// Creating variables to hold data from textboxes
var uname = $("#user").val();
var upass = $("#pass").val();
$.post("Authorize.php",
{ data: JSON.stringify({ LoginName: uname,Password: upass }) },
function( data )
{
var result = JSON.parse( data );
if ( result != null && result.Status != null && result.Status == 0 )
{
// if the result was valid and the Status was 0 ("success") then login succeeded
location.href = "listAll.php";
return;
}
// analyze what went wrong:
if ( result == null )
{
alert( "Invalid JSON result from validation request" );
} else if ( result.Status == null ) {
alert( "No Status field found in JSON result from validation request" );
} else {
alert( "Invalid username or password. Please try again." );
}
}
);
});
</script>
作为回报的webservice,响应时带有以下值:
{
"Value": {
"TokenId": 11,
"LoginName": "Jerry.Mann",
"Created": "2013-12-10T15:44:49",
"Expires": "2013-12-31T15:44:49",
"Token": "61f5da50-d0d9-4326-a403-f8e4798c0f0d",
"LastUsed": "2013-12-10T15:44:49"
},
"Status": 0,
"Message": null
}
到目前为止一切顺利。但是,我们要做的是将TokenId,LoginName,Created,Expires,Token,LastUsed中的值传递给名为listAll.php的页面。
将这些值传递给listAll.php的想法是我们可以处理它们以及其他表单字段并提交到数据库。
我花了很多时间在谷歌搜索答案,但到目前为止还没有找到任何可用的解决方案。
我最接近解决方案的是一个名为data.Value.Token
的东西明显因为JSON结构在一个名为data的变量中,但我还没想出如何将它传递给listAll.php页面。
此外,data.Value.Token仅传递tokenId的值。
有关如何将与数据变量相关的值传递给listAll.php的任何想法都将不胜感激。
<form id="Form1" method="get" >
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="label" nowrap><label for="user">UserName:</label></td>
<td class="field">
<input maxlength="40" class="required" name="user" id="user" size="20" type="text" tabindex="2" value="" style="width:400px;color:#999;font-size:9pt;height:20px;" />
</td>
</tr>
<tr>
<td class="label" nowrap><label for="pass">Password:</label></td>
<td class="field">
<input maxlength="40" class="required" name="pass" id="pass" size="20" type="text" tabindex="3" value="" style="width:400px;color:#999;font-size:9pt;height:20px;" />
</td>
</tr>
<tr>
<td></td>
<td>
<div class="buttonSubmit">
<span></span>
<input type="button" id="btnValidate"
style="width: 180px" value="Log In" />
</div><br clear="all"/>
</td>
</tr>
</table>
答案 0 :(得分:1)
在你的后端脚本Authorize.php中,你应该将令牌存储到会话中。
JS
$("#btnValidate").click(function(){
$.post('Authorize.php', {$('#form').serialize()}, function(data) {
try {
data = JSON.parse(data);
} catch (e) {
return false;
}
if (data && 'ok' == data.result) {
top.location = 'listAll.php';
}
return false;
});
});
Authorize.php
if (empty($_POST) || isset($_POST['pass']) || !isset($_POST['login'])) {
exit;
}
/*
* some authorize logic
*/
if ($authorized) {
session_start();
$_SESSION['token'] = $token;
echo json_encode(array('result' => 'ok'));
}
exit;
答案 1 :(得分:0)
你可以使用session将数组传递给另一个页面。
session_start();
$JsonResult = $_SESSION['result']