0

我已经编辑了代码,更新的代码如下,此代码无法获取关键字元标记,因此它不起作用。

旧描述: 我正在尝试连接字符串以获取 finalUrl,但由于 tags 变量我无法这样做。我需要获取页面的关键字元标记并将其附加以获取 finalUrl。有什么帮助吗?

  <script type="text/javascript">


    var tags=$('meta[name=keywords]').attr("content");
    var gameurl = "http://xyz/abc/details/";
    var jsn = ".json?callback=showGameDetail";
    var finalUrl= gameurl.concat(tags).concat(jsn);


function loadJSON(url) {
  var headID = document.getElementsByTagName("head")[0];
  var newScript = document.createElement('script');
      newScript.type = 'text/javascript';
      newScript.src = url;
  headID.appendChild(newScript);
}

function showGameDetail(feed){
  var title = feed.title;



    var game_url = feed.pscomurl;
    var packart_url = feed.Packart;
  $("#bnr-ads-box").html("<img src='"+"http://abc.com/"+packart_url+"'>");




}

loadJSON(finalUrl);
</script>
<div id="bnr-ads-box"></div>
4

6 回答 6

1
<!DOCTYPE html>
<html>
    <head>
        <meta id="metaK" name="keywords" content="customizable software for QuickBooks, QuickBooks-integrated, Method customization, CRM accounting, Method for QuickBooks, Method CRM, Method blog,  Salesforce automation, Method online platform, QuickBooks customization, web-based platform, industry-specific, customer portal, Method Field Services, Method Manufacturing, ERP" />
        <script type="text/javascript" src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
    </head>
<body>

<p id="demo">Click the button to join two strings into one new string.</p>

<button onclick="myFunction()">Try it</button>

<script>
function myFunction()
{
var tags=$('meta[name=keywords]').attr("content");

var gameurl = "http://xyz/abc/names/";
var jsn = ".json?callback=showGameDetail";
var finalUrl= gameurl.concat(tags).concat(jsn);

document.getElementById("demo").innerHTML=finalUrl;
}
</script>

</body>

</html>
于 2013-08-26T08:31:36.483 回答
1

改变这个

var tags="$('meta[name=keywords]').attr("content");";

var tags=$('meta[name=keywords]').attr("content");

也使用此代码var finalUrl = gameurl + tags + jsn;

于 2013-08-26T08:33:50.457 回答
1

您需要的是转义 tags 变量中的双引号,如下所示:

var tags="$('meta[name=keywords]').attr(\"content\");";

Cris 的解决方案也很好,但在某些情况下,您需要在字符串中包含两组双引号,因此您将被迫正确转义。

仅供参考:转义是在字符串中生成特殊字符的过程,否则会导致问题,例如在 javascript 中,字符串中不能有换行符,如下所示:

var mystring = 'on
a different line'; // <- this causes a syntax error

所以一个人会做以下事情:

var mystring = 'on\na different line';
于 2013-08-26T08:44:21.363 回答
1

有争议的,你可以使用一个数组,可以通过调用连接join()

var tags = $('meta[name=keywords]').attr("content");
var data = [
 "http://xyz/abc/names/",
 encodeURIComponent(tags),
 ".json?callback=showGameDetail"
].join('');
$("#demo").html(data);
于 2013-08-26T08:47:11.090 回答
1

你忘了包括 jquery

<!DOCTYPE html>
<html>
<head>
<meta name="keywords" content="hello"/>

<script type="text/javascript" src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
<script type="text/javascript">
function myFunction()
{
alert("Hello World!");
var tags=$('meta[name=keywords]').attr("content");

var gameurl = "http://xyz/abc/names/";
var jsn = ".json?callback=showGameDetail";
var finalUrl= gameurl.concat(tags).concat(jsn);
alert(finalUrl);
}
</script>
</head>

<body>
<button onclick="myFunction()">Try it</button>
</body>
</html>
于 2013-08-26T08:52:56.857 回答
0

实际上 concat 方法也适用于字符串(至少在 chrome 中),但推荐的方法是使用加连接字符串运算符

但是,您缺少一些东西

  1. jQuery 库 - 我假设您想要它,因为您在示例中有 $(...)
  2. 从关键字编码字符串 - 我使用encodeURIComponent来处理关键字中可能的换行符和引号

.

<!DOCTYPE html>
<html>
<head>
    <title>Create a URL from keywords</title>
    <meta name="keywords" content="These are tags" />
    <script src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
    <script>
    function myFunction() {
      var tags = $('meta[name=keywords]').attr("content");
      var URL ="http://xyz/abc/names/" +
       encodeURIComponent(tags) + 
       ".json?callback=showGameDetail";
      window.console &&  console.log(URL);
      $("#demo").html(URL);     
   }
   </script>
  <body>
    <p id="demo">Click the button to join two strings into one new string.</p>
    <button onclick="myFunction()">Try it</button>
  </body>
</html>
于 2013-08-26T08:39:48.043 回答