我仍在努力将JSON数据传递到另一个页面。任何想法如何做到这一点?

时间:2013-12-11 15:01:13

标签: php ajax json

请原谅我发帖太多了。

当用户单击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>

2 个答案:

答案 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']