我正在以下列方式从PHP传递javasript函数的线索:
<select onChange="display_databody(<?=$manufacturers_id?>,<?=$modelID?>,this.value,<?=**$month_year**?>);">
这里$ month_year是从MySQL获得的字符串。
当javascript函数获得此值时,它会变为-8或-13。
我尝试过json_encode(),但它也无效。
答案 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 ?>);">