【问题标题】:What is the problem with this php generated javascript?这个php生成的javascript有什么问题?
【发布时间】:2015-02-19 17:50:57
【问题描述】:

在主机上,php 生成 javascript,它会抛出以下错误: 失踪 ;声明之前

生成的代码是:

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){}";

【问题讨论】:

  • 我认为你必须在字符串中使用单引号或转义你的双引号
  • 你在连接中缺少 +
  • "...在 localhost 中它工作正常" 我敢打赌代码在任何主机上都不起作用。如果看起来确实如此,那么您可能正在运行缓存中的不同代码。
  • Javascript 执行也不依赖于托管,因为这部分似乎是客户端,就您所说的在 Firefox 中测试它而言
  • 绝对不能在任何环境下工作。请看我上面的评论。

标签: javascript php jquery ajax hosting


【解决方案1】:

看看这一行……​​

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 中干净地包含引号的一种方式;否则,您可以使用 \"\" 斜线转义引号。

更新

鉴于我在上面看到的您的更改,看起来您是如何构建字符串的。构建字符串时不要使用回车键。试试这样...

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

【讨论】:

  • 进行了一些更新和一个小提琴测试...查看更新。
  • 鉴于此,请确保它是一个单独的字符串...我会更新答案。
  • 看起来重复的回声导致了问题。在 PHP 中构建一个字符串并回显那个长的字符串。否则,您将遇到这些类型的问题。
  • 这个问题导致我6年前被封号,现在我仍然被封号。我无法在此页面上删除、评论、询问或任何内容。如果有人可以帮助删除它,我将不胜感激。 :D
猜你喜欢
  • 1970-01-01
  • 2010-11-01
  • 2011-08-26
  • 2017-06-28
  • 1970-01-01
  • 1970-01-01
  • 2011-10-19
  • 1970-01-01
  • 2015-10-27
相关资源
最近更新 更多