2017-06-21 80 views
0

關於將字符串傳遞給javascript函數有很多問題 - 這不是我在這裏問的。我的問題是,我必須將一個整數(客戶ID)作爲字符串傳遞給PHP中的javascript函數。我必須這樣做的原因有時客戶ID可能有前導零,我不知道需要多少前導零,所以我無法用JavaScript中的前導零填充或格式化。將字符串傳遞給javascript函數參數被解析爲整數

這是調用我的函數的PHP。 $行是來自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 
} 

作爲示例,我有一個「026608」的customerId。當調用disableAccount函數時,customerId參數被解析爲一個整數,該整數將去掉前導零,現在我有一個參數'26608'。

正如我上面提到的,我不能使用填充將前導零添加到customerId,因爲customerId上不總是前導零。 customerId也可以有多個前導零。

如何讓我的函數解析一個字符串,即「026608」作爲帶前導零的參數?提前致謝!

+2

如果它有前導零,它不是一個整數,它是一個字符串。如果您需要使用前導零進行處理,請以整個方式將其作爲字符串發送。 – mkaatman

+0

你的php沒有將這個值包含在引號中,因爲它將參數寫入onclick處理程序,所以它會是一個數字。 – James

+0

「上述工作正常,並正確傳遞一個帶前導零的字符串作爲函數。」不,它不。 –

回答

4

嘗試通過/逃避引號,因此得到由JS

(\"" . $row["userAccountId"] . \"" 
+0

工作,謝謝。我認爲它正確傳遞,因爲我也使用這個值來設置元素的ID在一個while循環。由於ID已經正確地進入,我認爲它正確地傳遞給函數。 – Riccaforte

+0

歡迎你,很高興它幫助;)這樣你的js函數被稱爲'disableAccount(「026608」...'而不是'disableAccount(026608 ...' –

1
由約翰·史密斯,也是在這種情況下前導零(雖然另一個有用的功能

大點,不超過有效的分析爲字符串約翰的)是sprintf功能。

$id = 321; 

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

    //Rest of your code... 
    } 
1

使用heredoc語法,只要你在PHP中生成HTML,它更具可讀性:

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

...因爲你沒有逃避你的報價,你可能已經發現你的問題立刻。

+0

謝謝,我不知道! – Riccaforte

相關問題