Varun Luthra
Varun Luthra

Reputation: 23

Concatenate Strings in JavaScript

I Have edited the code, the updated code is below, This code is not able to fetch the keywords meta tag, hence it is not working.

old description: I am trying to concatinate the strings to get the finalUrl, but I am not able to do so becuase of the tags variable. I need to fetch the keywords meta tag of the page and append it to get the finalUrl. Any help?

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

Upvotes: 0

Views: 2113

Answers (6)

roland
roland

Reputation: 7775

Tough debatable, you can use an array, which can be concatenated by calling join():

var tags = $('meta[name=keywords]').attr("content");
var data = [
 "http://xyz/abc/names/",
 encodeURIComponent(tags),
 ".json?callback=showGameDetail"
].join('');
$("#demo").html(data);

Upvotes: 1

Leo T Abraham
Leo T Abraham

Reputation: 2437

<!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>

Upvotes: 1

mplungjan
mplungjan

Reputation: 177684

Actually the concat method works on strings too (in chrome at least) but the recommended method is using the plus concatenation string operator

You are however missing some stuff

  1. jQuery library - I assume you want that since you have $(...) in the example
  2. encoding of the string from the keywords - I use encodeURIComponent to handle possible newlines and quotes in the keywords

.

<!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>

Upvotes: 0

Brij Raj Singh - MSFT
Brij Raj Singh - MSFT

Reputation: 5113

You forgot to include the 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>

Upvotes: 1

Christian
Christian

Reputation: 28125

What you need is to escape the double quotes inside your tags variable, like so:

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

Cris' solution is also fine, but in some case you will need to have two sets of double quotes inside a string so you will be forced to do escaping correctly.

FYI: Escaping is the process of having special characters getting generated in a string which would otherwise cause issues, for instance in javascript you can't have newlines in a string, like this:

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

So one would do the following:

var mystring = 'on\na different line';

Upvotes: 1

Cris
Cris

Reputation: 13341

change this

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

to

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

also use this code var finalUrl = gameurl + tags + jsn;

Upvotes: 1

Related Questions