2017-04-03 11 views
0

要求がonclickからhref=urlに送信されています。このURLにヒットすると、サーバーからクライアントにクエリ文字列としてデータが返されます。レスポンスを解析する方法[オブジェクトオブジェクト]

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

そして、ときに私が使用して印刷:

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

を私もJSON.Stringifyで試してみました: console.log('posts', JSON.Stringify(posts)); クエリ文字列を返すように引用符"[Object,Object]"

機能と同じように印刷された:

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

はしかし、私は、サーバー上のレスポンスデータを印刷することができる午前:

{ 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]' } 

注:私はnodejs

答えて

3

[Object, Object]とexpressjsを使用していますがを送信された値です。それを解析することは何の役にも立たないでしょう。解析するのに役立つものは何もありません。

データの送信方法を修正する必要があります。

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 

、あなたはもう一方の端に(構文解析の逆を行いJSON.parseないJSON.stringify()で!)JSONをパース:JSONとしてそれをコードする

は一つの方法です。

+0

応答のエンコーディングは機能しましたが、なぜこれが起こったのか知りたいのですが?エンコードせずにデータ転送中に何が起こるのですか? – kittu

+1

あなたは文字列を受け取り、 '+'演算子を右側のオブジェクトと共に使用しました。これは暗黙のうちにオブジェクトの 'toString()'を呼び出します。それは文字列 '' [object Object] ''を返します。 – Quentin

+0

これで分かりました。ありがとうございました – kittu

関連する問題