3

The request is being sent from onclick of href=url. When this url is hit, I am returning data from server to client as a query string.

res.redirect("/#blog_post_details/?dataUrl="+response[0].attributes);

And when I print using:

var posts = DataMixin.getParameterByName(dataUrl);
console.log('posts', posts); //I get [Object, Object]

I also tried with JSON.Stringify: console.log('posts', JSON.Stringify(posts)); which prints the same with quotes "[Object,Object]"

Function to return query string:

getParameterByName: function (name, url) {
    if (!url) {
      url = window.location.href;
    }
    name = name.replace(/[\[\]]/g, "\\$&");
    var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
        results = regex.exec(url);
    if (!results) return null;
    if (!results[2]) return '';
    return decodeURIComponent(results[2].replace(/\+/g, " "));
}

However, I am able to print response data on server:

{ created_at: '4/3/2017, 1:23:28 AM',
  details: 'jjj',
  id: 136,
  post_id: '1491162808010',
  title: 'Basic Syntax and Tag declaration',
  url: 'basic_syntax_and_tag_declaration',
  userImage: 'assets/img/spiritual-icon4.png',
  username: '[email protected]' }

Note: I am using expressjs with nodejs

1 Answer 1

7

[Object, Object] is the value you are sending. Parsing it won't do any good, there is nothing useful to parse.

You need to fix how you are sending the data.

Encoding it as JSON is one approach:

var values = response[0].attributes;
var json_values = JSON.stringify(values);
var url_safe_json_values = encodeURIComponent(json_values);
res.redirect("/#blog_post_details/?dataUrl=" + url_safe_json_values

then you parse the JSON (with JSON.parse not JSON.stringify (which does the opposite of parsing!)) at the other end.

Sign up to request clarification or add additional context in comments.

3 Comments

Encoding the response worked but I want to know why did this happen? What happens during data transfer without encoding?
You took a string and used the + operator with an object on the right hand side. That implicitly calls toString() on the object. That returns the string "[object Object]"
Okay now I understand. Thank you

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.