2015-11-12 2 views
6
'recipient.firstName': 'Fred', 
    'recipient.lastName': 'Johnson' 

वहाँ किसी भी तरह से सुरुचिपूर्ण में इस बारी करने के है? मैं जेएसओएन पोस्ट करना चाहता हूं लेकिन ऐसा लगता है कि एचटीएमएल के साथ बहुत आसानी से किया जाता है, इसलिए मैं लोगो के साथ पोस्ट को रोकना चाहता हूं और इसे जेएसओएन में प्रारूपित करना चाहता हूं।HTML पोस्ट डेटा को JSON में कैसे चालू करें?</p> <pre><code>var recipient = { firstName: 'Fred', lastName: 'Johnson } </code></pre> <p>दृश्यपटल पर जे एस का उपयोग करना:

संपादित करें: मैं स्पष्टता के लिए उपरोक्त मूल प्रश्न छोड़ रहा हूं, लेकिन यदि आप बारीकी से पढ़ते हैं तो आप देखेंगे कि मेरे पास यह समस्या AJAX के साथ एक आरईएसटी एपीआई में डेटा पोस्ट नहीं कर रही है। यह बहुत आसान है और पहले से ही लागू किया गया है। क्या हो रहा है कि मैं गतिशील रूप से एक टेम्पलेट इंजन का उपयोग करके फॉर्म बना रहा हूं जो मैंने बनाया है, और फॉर्म आईडी और नाम नेटस्टेड डेटा जैसे कि प्राप्तकर्ता.फर्स्टनाम का प्रतिनिधित्व करने के लिए बनाए गए हैं। हालांकि, जब मुझे एपीआई एंडपॉइंट पर JSON के रूप में पारित किया गया यह डेटा प्राप्त होता है, तो मुझे इसे पहले प्रारूप से दूसरे प्रारूप में प्रोग्रामेटिक रूप से बदलने की आवश्यकता होती है, जो वास्तव में सवाल पूछता है कि क्या आप इसे बारीकी से पढ़ते हैं। किसी भी भ्रम के लिए खेद है, मैंने जो उत्तर नीचे सूचीबद्ध किया है, वह सवाल हल करता है।

+1

तुम कुछ प्रयास करना चाहिए और उसके बाद कोई प्रश्न पूछें। गुणों पर Iterate, बिंदुओं के साथ गुणों के लिए देखो और उन गुणों के लिए उप-वस्तुओं बनाएँ। इतना कठिन प्रतीत नहीं होता है, मैं कोड लिखना नहीं चाहता हूं और आपको सीखने के अनुभव से –

+0

हां जुआन, मूल रूप से जो मैं अभी लिख रहा हूं। – Antoine

+0

ऑब्जेक्ट को स्ट्रिंग करें, प्राप्तकर्ता को प्रतिस्थापित करें। स्ट्रिंग के साथ और स्ट्रिंग पार्स। JSON.parse (JSON.stringify (मूल) .replace (/ प्राप्तकर्ता \ ./ g, '')) – Jules

उत्तर

-2

यह क्या है मैं उपयोग कर रहा हूँ:

_.forOwn(options, function(value, key) { 
    if(key.indexOf('.') != -1){ 

    var split = key.split('.') 

    if(!global[split[0]]) { 
     global[split[0]] = {} 
    } 

    global[split[0]][split[1]] = value 
    } 
}); 

global का उपयोग करके मैं बैकएंड पर नोडजेएस का उपयोग कर रहा हूं।

अब तक काम करने लगता है, अगर मैं अंततः इसका उपयोग कर समाप्त करता हूं तो मैं वापस रिपोर्ट करूंगा।

+0

आपका दृष्टिकोण तय करने की ज़रूरत है, Google ने अजाक्स का उपयोग नोडजेस के साथ किया है: http://stackoverflow.com/questions/13478464/how-to-send-data-from-jquery-ajax-request-to-node-js-server –

0

एक फार्म के साथ jQuery के साथ serializeArray() और forEach और अन्य वस्तु का उपयोग करना द्वारा:

$(function() { 
 
    var recipient = $("#frm").serializeArray(); 
 
    var output = {}; // Declare an object. 
 

 
    recipient.forEach(function(v, i) { 
 
    output[v.name] = v.value; // Assign the current value to the current key. 
 
    }); 
 

 
    $.ajax({ 
 
    url: "http://httpbin.org/post", 
 
    type: "POST", 
 
    data: JSON.stringify(output), // Send the object. 
 
    contentType: "application/json", 
 
    success: function(response) { 
 
     //console.log(response); 
 
    } 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<form id="frm" method="post"> 
 
    firstName: 
 
    <br/> 
 
    <input id="firstName" name="firstName" type="text" value="Fred" /> 
 
    <br />lastName: 
 
    <br/> 
 
    <input id="lastName" name="lastName" type="text" value="Johnson" /> 
 
    <br />age: 
 
    <br/> 
 
    <input id="age" name="age" type="text" value="30" /> 
 
</form>

अनुरोध में, आप भेजें: enter image description here

+0

कृपया मुझे जो प्रश्न मैंने पोस्ट किया है उसे देखें। – Antoine

1
var recipient = [{firstName: "Fred",lastName: "Johnson"}] 
       //:: CONVERT TO JSON 
       recipient = JSON.stringify(recipient); 
       //:: POST THE DATA 
       $.post(LINK_url,{post_recipient : recipient },json/*:: json not important, it can be auto guessed. delete ',json' */,function(output){ 
        //var data =jQuery.parseJSON(output);}); 

______________________________edit_______________________________________ अगर मैं आप सही इस समय अपने उत्पादन योजना पाठ है और आप json में बदलने के लिए, यदि ऐसा है तो यह कोशिश की जरूरत है।

var recip = JSON.stringify[{ output }]; 
var data = jQuery.parseJSON(recip); 
var viewdata=''; 
$.each(data, function(key, recipient){viewdata += 
recipient.firstName +" "+recipient.lastName+"<br/>" 
}) 
prompt(viewdata); 
+0

कृपया उस प्रश्न को देखें जो मैंने प्रश्न पर पोस्ट किया है। – Antoine

0

अद्यतन

अब मुझे पता है कि अपने सर्वर साइड NodeJS आप बस कैसे NodeJS सर्वर साइड तरीकों कॉल करने के लिए सीखने की जरूरत है है:

How to send data from JQuery AJAX request to Node.js server

तो अपने दृष्टिकोण बस है गलत, आपके पास डेटा की यह अनावश्यक जटिल स्ट्रिंग है जिसे आप अवरुद्ध करना चाहते हैं। कुछ भी अवरुद्ध न करें, शुरुआत से एक अच्छी तरह से स्वरूपित HTTP पोस्ट भेजें, jQuery या जावास्क्रिप्ट के साथ अपने सर्वर नियंत्रक या एपीआई में। आपकी एपीआई विधि का हस्ताक्षर होना चाहिए:

DoSomethingWithRecipient(string firstName, string lastName); 

आपके प्राप्तकर्ता के पास उपयोगकर्ता भी होना चाहिए लेकिन यह आपके ऊपर है। यदि आप सर्वर साइड फ्रेमवर्क का उपयोग नहीं कर रहे हैं जो आने वाले अनुरोध को पार्स कर सकता है और इसे अपने DoSomethingWithRecipient फ़ंक्शन जैसे PHP या एएसपी पर मैप कर सकता है।आपके द्वारा एनईटी को किसी भी कारण से पहिया को फिर से शुरू करने की संभावना है।

jQuery के साथ से आप बस इतना की तरह एक अजाक्स HTTP पोस्ट करते हैं:

var recipient = { 
    firstName: 'Fred', 
    lastName: 'Johnson' 
} 

var json = JSON.stringify(recipient); 

$.ajax({ 
    url: '/MyUrl/DoSomethingWithRecipient', 
    type: 'POST', 
    dataType: 'json', 
    data: json, 
    contentType: 'application/json; charset=utf-8', 
    success: function (data) { 
    }, 
    error: function (result) { 
    } 
}); 
+0

कृपया इस प्रश्न पर पोस्ट किया गया अपडेट देखें। – Antoine

+0

टेम्प्लेट इंजन में टेम्पलेट इंजन के प्रारूप का ज्ञान क्यों न रखें ... पोस्ट करने से पहले टेम्पलेट इंजन में JSON बनाएं –

संबंधित मुद्दे