将字符串传递给javascript函数参数将被解析为整数

时间:2017-06-21 20:13:19

标签: javascript php

将字符串传递给javascript函数有很多问题 - 这不是我在这里问的问题。我的问题是我必须将一个整数(客户ID)作为字符串传递给PHP的javascript函数。我必须这样做的原因有时客户ID可以有前导零,我不知道需要多少前导零,因此我无法在javascript中使用前导零填充或格式化。

这是调用我的函数的PHP。 $ row是来自odbc查询的结果数组。

parse_str("customerId=" . $row["customerId"], $output);
// This is called via AJAX, so returning HTML as response
...
echo "<td><input type='checkbox' id='" . $output["customerId"] . "' onclick='disableAccount(" . $row["userAccountId"] . ", " . $output["customerId"] . ");' checked /></td>

以上工作正常,并且正确地将带有前导零的字符串传递给函数。这是该功能的一部分。

function disableAccount(userAccountId, customerId) {
// Do stuff here
}

例如,我有一个&#34; 026608&#34;的customerId。调用disableAccount函数时,customerId参数将被解析为整数,它会删除前导零,现在我的参数为&#39; 26608&#39;。

正如我上面提到的,我不能使用填充向customerId添加前导零,因为在customerId上始终没有前导零。 customerId也可以有多个前导零。

如何让我的函数解析一个字符串,即&#34; 026608&#34;作为前导零的参数?提前谢谢!

3 个答案:

答案 0 :(得分:4)

尝试传递/转义引号,以便js

将其解析为字符串
facReplace <- function(m, f) {
  # f is a list of factors, f1, f2, ..., fn
  # They are combined to make an array called x
  # Also make a data-frame copy of the matrix m 
  x <- do.call("c", f)
  m1 <- data.frame(m)
  row.names(m1) <- x
  names(m1) <- x

  # use %in% recursively to set items in m1 that don't share a factor to 0
  for (i in 1:length(f)) {
    for (j in 1:length(x)) {
      for (k in 1:length(x)) {
        tempfac <- do.call("c", f[i])
        temprow <- x[j]
        tempcol <- x[k]
        if (!(temprow %in% tempfac) & (tempcol %in% tempfac)) (m1[j, k] <- 0)
      }
    }
  }
  return(m1)
}

# Test the function with the original example
set.seed(123)
thedata <- matrix(data = runif(16, 0, 10), nrow = 4, ncol = 4)
thedata

         [,1]     [,2]     [,3]     [,4]
[1,] 2.875775 9.404673 5.514350 6.775706
[2,] 7.883051 0.455565 4.566147 5.726334
[3,] 4.089769 5.281055 9.568333 1.029247
[4,] 8.830174 8.924190 4.533342 8.998250

factor1 <- c("x1", "x2")
factor2 <- c("x3", "x4")
theFactors <- list(factor1, factor2)

facReplace(thedata, theFactors)

         x1       x2       x3       x4
x1 2.875775 9.404673 0.000000 0.000000
x2 7.883051 0.455565 0.000000 0.000000
x3 0.000000 0.000000 9.568333 1.029247
x4 0.000000 0.000000 4.533342 8.998250

答案 1 :(得分:1)

约翰史密斯的优点,也是领先零的另一个有用功能(虽然在这个例子中,效率不比约翰的高)是sprintf函数。

$id = 321;

function disableAccount($userAccountId, customerId)
    {
    //Result is 000321
    $userAccIdWithZeros = sprintf('%06d', $userAccountId);

    //Rest of your code...
    }

答案 2 :(得分:1)

每当您在PHP中生成HTML时,都使用heredoc语法,它更具可读性:

echo <<< _
<td>
    <input type="checkbox" 
           id="{$output['customerId']}" 
           onclick="disableAccount('{$row['userAccountId']}', this.id);" 
           checked />
</td>
_;

...因为你不必逃避你的报价,你可能一次发现了你的问题。