将字符串传递给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;作为前导零的参数?提前谢谢!
答案 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>
_;
...因为你不必逃避你的报价,你可能一次发现了你的问题。