Вам действительно нужны ведущие нули? Вы испытываете один из недостатков языков со слабой типизацией, таких как php или JavaScript: интерпретатор решает, какой тип является каждой переменной, а не вы. Это экономит работу большую часть времени, потому что «это просто работает», но иногда тип данных, выбранный интерпретатором, не тот, который вы ожидаете, и вы попадаете сюда.
Вы можете думать, что ваши аргументы являются либо строками, либо целые числа с большим количеством начальных нулей, но интерпретаторы на самом деле видят восьмеричные числа (которые при преобразовании в десятичное значение изменяются)
В зависимости от того, какой фактический тип вы ожидаете, у вас есть много альтернатив:
Если вы ожидаете, что аргумент будет обрабатываться как строка, вам нужно сохранить ведущие нули, но не допускать любой восьмеричной интерпретации, подобной этой
function approve(args)
{
var a = String(args); // force the type to string
if(confirm('Do you want to approve this document?'))
{
window.location = "http://52.45.5.57/index.php/FinalizeCase/approve/" + a;
}
else
{
return false;
}
Просто чтобы быть в безопасности, вы также можете захотеть значение в вашем контроллере и приведите его как строку тоже. Предполагая, что args также называется $ args в вашей PHP части, вы можете сделать что-то вроде
public function approve( (string) $args = null)
{
// Do whatever you need to do
}
Это также будет мой рекомендуемый порядок действий, если ваши аргументы представляют собой целое число с нулем в базе данных .
Если вам нужно рассмотреть аргументы как строки, вы должны обрезать лидирующие нули и привести их к типу int, используя parseInt();
в JavaScript и / или $args = (int) $args;
в php