Javascript:缺少;在语句之前 - 转义错误

时间:2014-12-21 11:38:19

标签: javascript php jquery ajax hosting

在主机上,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){}";

1 个答案:

答案 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