【问题标题】:Pass GET variable to JavaScript [duplicate]将 GET 变量传递给 JavaScript [重复]
【发布时间】:2014-04-02 13:25:52
【问题描述】:

我正在使用 GET 从我的网址中检索查询字符串,例如:

index.php?page=quiz

然后我想运行我的函数getPage,它是使用page=的值的JS(在这种情况下它是quiz

所以我有一个 onload 函数,它只在 page 有值时运行:

<body
    <?php
        if(!empty($_GET["page"])){
            //echo "onload='runPage(" . $_GET["page"] . ")'";
            echo "onload='runPage()'";
        }
    ?>
>

这基本上是这样的:

<body onload="runPage(quiz)">

在这种情况下,我想将quiz 传递给runPage 函数,以便我可以在其中使用它。例如:

function runPage(this){
  var page = this;
  console.log("Page = " + page);
}

但这只是抛出一个错误,说 quiz 未定义...我的逻辑哪里错了?

编辑:所以我更新了我的代码,现在得到:

<body onload='runPage("quiz")'>

但现在我想进行“测验”并将其传递给这个函数:

function runPage(){
// run stuff in here using the value of that variable e.g:
console.log("You've come through from the URL with quiz on the end");
}

【问题讨论】:

  • 您也可以在 window.location.search 中找到您的 GET 变量
  • quiz 是一个未定义的变量,您应该将其作为字符串传递:&lt;body onload="runPage('quiz')"&gt;
  • 您需要将 quiz 转换为字符串,否则它会尝试评估一个不存在的名为“quiz”的变量。

标签: javascript php query-string


【解决方案1】:

你需要把变量放在那里。对于内联事件处理程序,它有点棘手:

<body <?php
  if( !empty($_GET['page'])) {
    echo 'onLoad="runPage('.htmlspecialchars(json_encode($_GET['page'])).');"';
  }
?> >

通常,您可以使用json_encode 以安全、防 XSS 的方式将变量从 PHP 传递到 JavaScript。但是因为您处于内联事件处理程序中,所以您还需要使用 htmlspecialchars 来确保它不会破坏您的 HTML 上下文(否则可能是另一个 XSS 向量)。

【讨论】:

    【解决方案2】:

    location.search返回一个Url的查询部分


    URL:index.php?page=quiz


    location.search="?page=quiz"

    【讨论】:

    • 这里问的不是什么...诚然,这个问题措辞很尴尬,但你应该注意^_^
    【解决方案3】:

    您需要将字符串括在引号中。因为您已经在 PHP 代码中嵌套了引号,所以您需要像这样对它们进行转义:

    echo "onload='runPage(\"" . $_GET["page"] . "\")'";
    

    不过要小心。这很容易受到脚本注入的影响。至少你需要清理$_GET['page']的内容。

    你的 Javascript 函数就变成了:

    function runPage(page){
      console.log("Page = " + page);
    }
    

    请注意,this 是一个关键字,在 Javascript 中具有特殊含义。无论如何您都不需要它 - 只需使用不同的变量名称即可。

    【讨论】:

    • 如果我给你设置炸弹,然后把你送到http://example.com/index.php?page="); alert("All your base are belong to us 会怎样?
    • 好的,我试过了。但我不明白如何从 onload 中获取该值: ("thisvaluehere") 并能够在函数中使用它。
    【解决方案4】:
    function runPage(){
      var page = '<?php echo $_GET['page']?>';
      if(page!=''){
        console.log("Page = " + page);
      }      
    }
    

    【讨论】:

    • 请解释您发布的代码 - 不要只是发布代码块!
    • 我留给你做
    • 最好根据自己的喜好编辑答案,而不是投反对票。
    猜你喜欢
    • 2014-01-11
    • 2016-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-10
    • 1970-01-01
    • 2015-01-07
    • 1970-01-01
    相关资源
    最近更新 更多