【问题标题】:get id in url form ajax call php以 url 形式获取 ajax 调用 php 的 id
【发布时间】:2016-08-28 17:15:09
【问题描述】:

我需要 url 中的 id 来创建 mysql_query。问题是我需要通过 Ajax 调用进行此操作,而 $_GET['id'] 显然不起作用。 有没有一种简单的方法可以让自己摆脱这种状态? 谢谢你:)

这是我的 ajax 调用:

echo "<div id='loading_utilizadores' class='loading'><img src='".$CONF['HOME']."/images/structure/ajax-loader.gif'/></div>";
        echo "<div id='utilizadores'></div>";

        echo "<script type='text/javascript'>";
            echo "CarregaAjax(\"#utilizadores\",\"#loading_utilizadores\",\"".$CONF['HOME']."/superadmin/box_utilizadores_ajax.php\", \"GET\")";
        echo "</script>";

ajax函数:

function CarregaAjax(id,loading,page,method){

if(method=="GET"){

    $(document).ready(function(){

        //$(loading).ajaxStart(function(){
            $(loading).show();
            $(id).hide();
        //});

        $(id).load(page);

        $(loading).ajaxStop(function(){
            $(loading).hide();
            $(id).show();
        });

    });

}
else{

    $(document).ready(function(){

        //$(method).submit(function() {
            $(loading).show();
            $(id).load(page,$(method).serializeArray());
            $(loading).hide();
            return false;
        //});

    });

}

和 html ajax 调用的和平。在此页面中,我尝试创建 $_GET['id'],但没有成功。

if (isset($_GET['id']))
{
    $officeID =  intval($_GET['id']);
}
else
{
    $officeID =  0;
}

if(!isset($crm_users))$crm_users = new crm_utilizadores;

//$officeID = 12;
$resultGetUsers = $crm_users->getUsersByOfficeId($officeID);

$html = "<table class='table1' width='100%' cellpadding='5' cellspacing='1' border='0'>";

if(!empty($resultGetUsers)){

    $html .= "<tr>";
        $html .= "<td class='table_title1'>Utilizador</td>";
        $html .= "<td class='table_title1'>Telefone</td>";
        $html .= "<td class='table_title1'>Telemóvel</td>";
        $html .= "<td class='table_title1'>E-mail</td>";
        $html .= "<td class='table_title1'>Situação</td>";
    $html .= "</tr>";
}else{
    $html .= "<tr><td class='empty1'>não foram encontrados utilizadores registados neste cliente</td></tr>";
}

//finalizar a tabela
$html .= "</table>";

我想我错了,对吧? :p

【问题讨论】:

  • 除非我没有正确阅读此代码,否则这是您在 AJAX 中调用的 URL:/superadmin/box_utilizadores_ajax.php 该 URL 中没有 id 值或任何其他值。
  • 我使用 ajax 函数从 php 加载文件,在本例中为 /superadmin/box_utilizadores_ajax.php。这个文件应该在已经写在包括这个文件的其他文件中的 HTML 之上写一些 HTML。我使用这种 $_GET 技术,它通常可以工作。使用此 ajax 调用,无法正常工作:/
  • 它“工作”很好。 URL没有您要查找的查询字符串参数。这看起来像这样:/superadmin/box_utilizadores_ajax.php?id=123 $_GET 集合在 URL 中查找查询字符串参数。它会找到它如果它在那里。但是,在您的代码中,它不存在。
  • 问题是当那个php被执行时,url看起来像这样:myurl/index.php?view=deleteOffice&id=12
  • 现在您谈论的是完全不同的页面。 index.phpbox_utilizadores_ajax.php 是不同的页面。哪个具有尝试从 URL 检索值的代码? (问题中显示的代码。)您可能会在某个时候将该值发送到index.php,但根据问题中发布的代码,您不会将其发送到box_utilizadores_ajax.php

标签: php html ajax url


【解决方案1】:

此代码尝试从 URL 读取 id 值:

$_GET['id']

this 是您请求的 URL:

/superadmin/box_utilizadores_ajax.php

如您所见,没有id 值(或任何其他值)。相反,它看起来像这样:

/superadmin/box_utilizadores_ajax.php?id=123

该值必须在 URL 上,$_GET 才能读取它。


现在,您当前查看的页面可能在您之前请求的网址中具有该值。但服务器端代码并​​没有查看您的屏幕或与您的网络浏览器进行交互。它所知道的只是您发送它的请求。并且该请求不包含该值。

您可以在加载页面时将该值放在请求中。在index.php 中读取$_GET['id'] 值并将其输出到发出该AJAX 请求的JavaScript 代码。 从技术上讲可能就是这么简单,只是为了演示:

"/superadmin/box_utilizadores_ajax.php?id=" . $_GET['id'] . "\", \"GET\")"

但是,请注意将原始用户输入输出到页面的危险。这会产生像XSS vulnerabilities 这样的东西。请注意您输出到页面的内容,但最终您需要在某处输出该值,以便该 JavaScript 代码将其发送到下一个 (AJAX) 请求。 (或者,或者,您可以将文件服务器端存储在会话状态或类似的状态。从而完全从等式中删除 URL。这两种方式都有利有弊。)


简而言之,如果该 URL 上的页面要读取该值,您需要在该 URL 上包含该值。代码只能读取存在的值。

【讨论】:

  • 仍然无法使其工作。给我一天时间让我头脑清醒,好好想想!但我很感激你的帮助!
  • 其实成功了!!!谢谢你,你的帮助对我来说真的很重要!我将检查如何防止恶意用户输入。再次,非常感谢!
猜你喜欢
  • 2018-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-29
  • 2013-05-23
相关资源
最近更新 更多