【问题标题】:passing mixed string and int parameters to javascript将混合字符串和 int 参数传递给 javascript
【发布时间】:2016-04-13 12:09:42
【问题描述】:

我环顾四周,似乎找不到可行的解决方案,所以这是要求。

我正在构建一个系统,该系统从母版页获取数据并将其加载到模态样式窗口中以进行快速数据处理。我有一个 javascript 函数传递 4 个状态参数,其中 3 个始终是整数,其中一个可以是整数或字符串。

如果所有 4 个参数都是整数,则该函数有效,但在传递字符串时失败。

function passJob(jobid,equipid,status,location) {

var a = document.getElementById('jobnumber');
var b = document.getElementById('equipid');
var c = document.getElementById('status');
var d = document.getElementById('location');
  a.value = jobid;
  b.value = equipid;  
  c.value = status;  
  d.value = location;  
}

PHP

<a href='#' onclick='passJob($sr,$eid,$ss,$sl);'>Modify Job</a>

$sr、$ss 和 $sl 将始终是数字,$eid 将要么是整数,要么是一个以 M 开头然后后面有一个数字的字符串。

我尝试在变量、变量周围、函数内部等处添加引号,但没有运气:(

【问题讨论】:

    标签: javascript php parameters


    【解决方案1】:

    如果你不知道它们是什么,你需要作为字符串传递 - 还要确保你没有嵌套相同类型的引号:

    onclick='passJob($sr,"$eid",$ss,$sl);'
    

    【讨论】:

    • 我用过这个解决方案。最初,我通过 php 将值回显到函数中,同时包含 ' 字符作为意外标记传入。我已经更改了页面该部分的编程风格,以允许在引号内回显!
    【解决方案2】:

    只需用引号括起来。这始终将其视为字符串,以避免任何潜在的 JavaScript 解析错误。

    <a href="#" onclick="passJob($sr, '$eid', $ss, $sl);">Modify Job</a>
    

    【讨论】:

      【解决方案3】:

      那是因为您没有正确地以 Javascript 符号对变量进行编码。试试:

      echo "<a href='#' onclick='passJob(".json_encode($sr).",".json_encode($eid).",".json_encode($ss).",".json_encode($sl).");'>Modify Job</a>";
      

      【讨论】:

      • 不知道为什么这被否决了。对变量进行 JSON 编码是将其传递给 JavaScript 的最可靠方式,无需知道变量实际上是什么。
      【解决方案4】:

      如下所示

      <a href="#" onclick="passJob($sr, '$eid', $ss, $sl);">Modify Job</a>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-06-01
        • 2016-03-16
        • 1970-01-01
        • 1970-01-01
        • 2021-07-24
        • 2011-05-12
        • 2022-11-26
        • 2018-11-25
        相关资源
        最近更新 更多