在主机上,php生成的javascript会丢失错误:
失踪;在陈述之前
同时在localhost上运行正常。
生成的代码是:
try{
obj = document.getElementById('subcat');
}catch(e){}
try{
obj.innerHTML = "<select name=\"sub_ad_category_id\">
<option value=\"\">-</option>
<option value=\"5\">bootle</option>
<option value=\"3\">Puzzle</option>
</select>";
}catch(e){}
它由action.php通过下一个代码生成:
if($var_type=='array') $text = '<select name="+ads_data[sub_ad_category_id]+">';
else $text = '<select name="sub_ad_category_id">';
$text .= '<option value="">-</option>';
$res = $ads->get_ads_categories($_SESSION['lang'],$parent_id);
while($r = mysql_fetch_array($res)){
$text .= '<option value="'.$r['ad_category_id'].'">'.$r['category_name'].'</option>';
}
$text .= '</select>';
echo "try{obj = document.getElementById('".$id."');}catch(e){}";
echo "try{obj.innerHTML = ".$text.";}catch(e){}";
答案 0 :(得分:2)
看看这一行......
obj.innerHTML = "<select name="sub_ad_category_id"><option value="">-</option></select>";
...修改(遗漏了一些+
个符号,并将双引号更改为单个''
}
obj.innerHTML = "<select name=" + sub_ad_category_id + "><option value=''>-</option></select>";
+
是简单的连接。''
单引号是在最终HTML中干净地包含引号的一种方式;否则,您可以使用\"\"
斜杠转义引号。<强>更新强>:
鉴于我对上述更改的看法,看起来您正在构建字符串。构建字符串时不要使用enter键。试试这样......
var html = "<select name=\"sub_ad_category_id\">";
html += "<option value=\"\">-</option>";
html += "<option value=\"5\">bootle</option>";
html += "<option value=\"3\">Puzzle</option>";
html += "</select>";
ob.innerHTML = html;
...或......
ob.innerHTML = "<select name=\"sub_ad_category_id\"><option value=\"\">-</option><option value=\"5\">bootle</option><option value=\"3\">Puzzle</option></select>";
请参阅 jsFiddle