2015-12-17 77 views
0

我收到了一些函数的问题,其中我传递了2个参数,其中一个包含字符串“12345.00”,主要问题是在console.log(字符串)这个回报只有“12345”。通过javascript函数将字符串传递给ajax

有没有办法得到整个字符串?

$data = array(
    array(
    'arg1' => '1', 
    'arg2' => '123' 
), 
    array(
    'arg1' => '2', 
    'arg2' => '12345.00' 
) 
); 

<button id="openTab">Test</button> 

foreach($data as $item){ 
    <script>       
    $('#openTab').click(function(e){ 
     e.preventDefault(); 
     getValues(<?php echo $item['arg1'](); ?>, <?php echo $item['arg2']; ?>); 
    });       
    </script> 
} 

function getValues(arg1, arg2){ 
    console.log(arg2); 
    new Ajax.Request("<?php echo $this->getUrl('getValues') ?>", { 
    method: 'POST', 
    type: 'json', 
    parameters: { arg1: arg1, arg2: arg2}, 
    onComplete: function(transport) { 
     var result = JSON.parse(transport.responseText);   
     console.log(result);  
    } 
    }); 
} 
+0

您使用的是什么浏览器?您提供的代码在Chrome中返回字符串“12345.00”。 –

+0

欢迎来到JS型强制。但你确定吗?我无法重现这一点:'getValues('1','12345.00'); > 12345.00'你是否以任何其他方式操纵价值? –

+0

确定,它为我在Chrome –

回答

1
getValues(<?php echo $item['arg1'](); ?>, <?php echo $item['arg2']; ?>); 

这使得:

getValues(2, 12345.00); 

需要引用他们,如果你想JS字符串:

getValues("<?php echo $item['arg1'](); ?>", "<?php echo $item['arg2']; ?>"); 

这使得:

getValues("2", "12345.00"); 

这可以通过查看呈现的JS来验证。

您还应该防守地编码,并假设返回的数据可能带有引号,例如,在将其呈现为JS之前,应将其转义为JavaScript。

理解您的文件基本上是一个模板很重要。客户端发生的事情完全取决于它如何呈现。您可以通过查看源代码或检查元素来检查渲染,以验证实际发生在浏览器中的内容。

+0

你说得对,引用了我解决问题的价值!多谢 – ndAR

相关问题