在rails中使用JSONP呈现多行Javascript

在rails中使用JSONP呈现多行Javascript,javascript,ruby-on-rails,json,Javascript,Ruby On Rails,Json,在一个控制器中,我尝试呈现一个javascript google广告,使用JSONP将其打印成一些HTML,如下所示 <script type="text/javascript"><!-- google_ad_client = "pub-23222424"; google_alternate_color = "FFFFFF"; google_ad_width = 468; google_ad_height = 60; //--></script> <sc

在一个控制器中,我尝试呈现一个javascript google广告,使用JSONP将其打印成一些HTML,如下所示

<script type="text/javascript"><!--
google_ad_client = "pub-23222424";
google_alternate_color = "FFFFFF";
google_ad_width = 468;
google_ad_height = 60;
//--></script>
<script type="text/javascript"
  src="http://pagead2.google.com/pgad/show_ads.js">
</script>

因此,我:

render :text "var s_response = { content: '<script type=\"text/javascript\"><!--\\ngoogle_ad_client = \"pub-23222424\";\\ngoogle_alternate_color = \"FFFFFF\";\\ngoogle_ad_width = 468;\\ngoogle_ad_height = 60;\\n//--><\\/script>\\n<script type=\"text/javascript\"\\n  src=\"http://pagead2.google.com/pgad/show_ads.js\">\\n<\\/script>', id: '2'};">
render:text“var s_response={content:'\\n\\n',id:'2'};”>
但我得到了这个错误:

未终止的字符串文字

[Break on this error] var response = { content: '<script type="text/javascript"><!-- 

[Break on this error]var response={content:'在JavaScript中,不能将字符串分散在多行上

在这种情况下,您可以省去这些注释,以便将所有内容都放在一行中,并去掉换行符(
\n

顺便说一句,有效的响应将用双引号围绕每个字符串,无论它代表键还是值。另请参见常见问题解答:

集合的正确格式为:
{
“键”:“值”}

最后,你会得到:

render :text "var s_response = { \"content\": \"<script type='text/javascript'>google_ad_client = 'pub-23222424';google_alternate_color = 'FFFFFF';google_ad_width = 468;google_ad_height = 60;<\\/script><script type='text/javascript' src='http://pagead2.google.com/pgad/show_ads.js'><\\/script>\", \"id\": \"2\"};">
render:text“var s\u response={\'content\”:\“谷歌广告客户端='pub-23222424';谷歌广告颜色='FFFFFF';谷歌广告宽度=468;谷歌广告高度=60;\”,“id\”:“2\”;>

在JavaScript中,不能将字符串分散在多行上

在这种情况下,您可以省去这些注释,以便将所有内容都放在一行中,并去掉换行符(
\n

顺便说一句,有效的响应将用双引号围绕每个字符串,无论它代表键还是值。另请参见常见问题解答:

集合的正确格式为:
{
“键”:“值”}

最后,你会得到:

render :text "var s_response = { \"content\": \"<script type='text/javascript'>google_ad_client = 'pub-23222424';google_alternate_color = 'FFFFFF';google_ad_width = 468;google_ad_height = 60;<\\/script><script type='text/javascript' src='http://pagead2.google.com/pgad/show_ads.js'><\\/script>\", \"id\": \"2\"};">
render:text“var s\u response={\'content\”:\“谷歌广告客户端='pub-23222424';谷歌广告颜色='FFFFFF';谷歌广告宽度=468;谷歌广告高度=60;\”,“id\”:“2\”;>

像下面的示例中那样编写巨大字符串,并停止转义它们:

render :text => %{ 
    <script type="text/javascript">
    //<!--
    google_ad_client = "pub-23222424";
    google_alternate_color = "FFFFFF";
    google_ad_width = 468;
    google_ad_height = 60;
    //-->
    </script>
    <script type="text/javascript" 
            src="http://pagead2.google.com/pgad/show_ads.js">
    </script> }
render:text=>%{
//
}

像下面的示例中那样编写巨大字符串,并停止转义它们:

render :text => %{ 
    <script type="text/javascript">
    //<!--
    google_ad_client = "pub-23222424";
    google_alternate_color = "FFFFFF";
    google_ad_width = 468;
    google_ad_height = 60;
    //-->
    </script>
    <script type="text/javascript" 
            src="http://pagead2.google.com/pgad/show_ads.js">
    </script> }
render:text=>%{
//
}

感谢您的回复

Marcel>问题是,如果我去掉了我的广告无法再显示的换行符,我会“手动”尝试。因此,在发送响应之前,我可能需要将“/n”字符替换为唯一字符串,并在服务器收到响应后再次替换它们


floatless>最初我没有逃避我的回复,它也不起作用。因此我认为它不会改变任何事情,但无论如何还是要感谢。

谢谢您的回复

Marcel>问题是,如果我去掉了我的广告无法再显示的换行符,我会“手动”尝试。因此,在发送响应之前,我可能需要将“/n”字符替换为唯一字符串,并在服务器收到响应后再次替换它们


floatless>最初我没有逃避我的回答,它也不起作用。因此我认为它不会改变任何事情,但无论如何还是要感谢你。

不客气,但你应该将这些评论作为对我们答案的评论发布,因为我们不会收到这些评论的通知(我只是意外地再次发现了这个问题)。请SO团队使用“联系我们”地址合并您的注册和未注册帐户(提供其号码:410029和409178).––为什么不能显示?出现了什么错误?我检查了字符串,它只包含有效的HTML/JS。也许你甚至应该去掉结尾处的\\标记,但这些都不重要。不客气,但你应该将这些评论作为我们答案的评论发布,因为我们不会收到这些评论的通知(我只是无意中再次发现了这个问题)。请SO团队使用“联系我们”地址合并您的注册和未注册帐户(提供他们的号码:410029和409178).––为什么不能显示?出现了什么错误?我检查了字符串,它只包含有效的HTML/JS。也许你甚至应该去掉结尾标记中的\\,但这些都不重要。