通过Angular视图的网址发送ID

时间:2017-02-14 11:44:38

标签: php mysql angularjs

我正在使用Angular来创建我的单页面视图,但我很难通过URL从sql select中传递ID。

我创建了我的视图:

var app = angular.module("myApp", ["ngRoute"]);

    app.config(function($routeProvider) {
        $routeProvider
        .when("/jobSingle", {
            templateUrl : "jobSingle.php"
        });    
    });

作品很棒,向我展示了正确的页面。我正在测试数据,所以这是开放的SQL注入,但我正在玩Angular所以不要惊慌 - 我从另一个视图链接到单个视图页面如下:

$sql = "SELECT * FROM jobs";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) { // Start while
        echo $row['title'];
        echo '<a href="#jobSingle?id=' . $row['id'] . '">View Job</a>';
        ?>

        <div class="lightboxHide animated fadeInUp">
            <div id="mylightbox">
                <?php echo $row['title']; ?>
            </div>
        </div>
    <?php
    } // End while
} else {
    echo "0 results";
}

所以,我有echo '<a href="#jobSingle?id=' . $row['id'] . '">View Job</a>';它似乎是正确的网址,它打开了正确的视图但是当我获取ID形式的URL和var转储它我什么也得不到...

$jobId = $_GET['id'];
var_dump($_GET);

$sql = "SELECT * FROM jobs WHERE id = '$jobId'";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) { // Start while
        echo $row['title'];
    } // End while
} else {
    echo "0 results";
}

我的var转储只是显示....

array(0) { } 0 results

当我在$_GET上执行var_dump时,我得到一个NULL值返回...它几乎就像url被忽略了,而且Id至少是......

这是否可能或者我错过了这一点?当我和Php合作时,我正在学习角度,主要是我想知道这是否能够做到?

1 个答案:

答案 0 :(得分:0)

#jobSingle?id=...标记中的 <a></a>设置了网址的<fragment>部分。当您打开网站时,您的浏览器不会在其请求中包含<fragment>部分网址。

要查看差异,只需在ULR中交换<query><fragment>部分即可实现正确的网址方案。例如:?id=1#jobSingle

以下是常见的网址语法,以阐明我所谈论的内容:

<scheme>://<user>:<password>@<host>:<port>/<path>?<query>#<fragment>

在URL中#mark之后的所有内容都被视为片段。

RFC 1738和RFC 3986包含已提出主题的完整说明。