javascript从PHP传递的字符串获取垃圾值

时间:2012-05-27 07:54:37

标签: php javascript

我正在以下列方式从PHP传递javasript函数的线索:

<select onChange="display_databody(<?=$manufacturers_id?>,<?=$modelID?>,this.value,<?=**$month_year**?>);">

这里$ month_year是从MySQL获得的字符串。

当javascript函数获得此值时,它会变为-8或-13。

我尝试过json_encode(),但它也无效。

3 个答案:

答案 0 :(得分:1)

您可以使用addslashes来转义变量:

<select onChange="display_databody('<?= addslashes($manufacturers_id) ?>',
    '<?= addslashes($modelID); ?>', this.value, '<?= addslashes($month_year); ?>');">

或者使用jQuery和htmlspecialchars

<select onChange="display_databody(this)" 
    data-manufacturer="<?= htmlspecialchars($manufacturers_id); ?>" 
    data-monthyear="<?= htmlspecialchars($month_year); ?>">

然后在你的功能中:

function display_databody(dropdown) {
    var $dropdown = $(dropdown),
    dropdown_value = $dropdown.val(),
    manufacturer_id = $dropdown.data('manufacturer'),
    month_year = $dropdown.data('monthyear');

    // your code
}

答案 1 :(得分:1)

我有一个脑波并且猜测$month_year是2012年1月的1-12字符串。这会导致您的HTML变成类似

 <select onChange="display_databody(2,4,this.value,1-12);">

并且Javascript将在执行函数时评估该值(此处为-11

用单引号包装字符串值。如果它们不是完全数字的话,你可能需要对前两个这样做。为了清楚起见,这里的线分开:您可能会将它重新加入。

 <select 
     onChange="display_databody(<?=$manufacturers_id?>,
     <?=$modelID?>,
     this.value,
     '<?=$month_year?>');">

答案 2 :(得分:-1)

您必须使用echo来编写变量

<select onChange="display_databody(<?php echo $manufacturers_id ?>,<?php echo $modelID ?>,this.value,<?php echo $month_year ?>);">