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

içine bu açmak için herhangi zarif bir yolu var mı? Ben POST JSON istiyorum ama bu HTML ile çok kolay yapılır gibi görünmüyor, bu yüzden jQuery ile POST durdurmak ve istediğim JSON biçimlendirmek istiyorum.HTML POST verileri nasıl JSON'a dönüştürülür? önyüz üzerinde JS kullanarak</p> <pre><code>var recipient = { firstName: 'Fred', lastName: 'Johnson } </code></pre> <p>:

DÜZENLEME: Açıklık için asıl sorudan ayrılıyorum, ancak daha önce okuduysanız, buradaki sorunun AJAX ile verileri bir REST API'sına göndermediğini göreceksiniz. Bu çok basit ve zaten uygulanmış. Olan şey, oluşturduğum bir şablon motoru kullanarak formları dinamik olarak oluşturmama ve formların kimliği ve adların recipient.firstName gibi iç içe geçmiş verileri temsil edecek şekilde oluşturulduğudur. Ancak, bu veriyi API son noktaya JSON olarak aldığımda, ilk formattan ikinci forma programlı olarak dönüştürmem gerekir; bu, soruyu gerçekten okuduysanız sormaktır. Herhangi bir karışıklık için özür dilerim, aşağıda listelediğim cevap soruyu çözüyor. serializeArray() ve forEach ve diğer nesne Kullanarak

bir form ile jQuery ile
+1

Bir şey denemek ve sonra bir soru sormalısınız. Özellikler üzerinde yineleyin, noktalarla özellikleri arayın ve bu özellikler için alt nesneler oluşturun. Bu kadar zor görünmüyor, kodu yazmak ve bir öğrenme deneyiminden uzak tutmak istemiyorum –

+0

Evet Juan, temelde şu anda yazdığım şey bu. – Antoine

+0

nesneyi dizginleyin, alıcıyı değiştirin. boş ve dize ayrıştırmak. JSON.parse (JSON.stringify (orijinal) .replace (/ alıcı \ ./ g, '')) – Jules

cevap

-2

Bu ne olduğunu ben kullanıyorum:

_.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 
    } 
}); 

Arka uçta NodeJS'yi kullandığım için global kullanın.

Şimdiye kadar işe yaramış gibi görünüyorsa, sonunda kullanıp kullanmadığımı bildireceğim. seni bu kez doğru alırsanız

______________________________edit_______________________________________

+0

Sizin yaklaşımınız neyin düzeltilmesi gerektiğidir, NodeJs ile Ajax kullanarak google: http://stackoverflow.com/questions/13478464/how-to-send-data-from-jquery-ajax-request-to-node-js-server –

0

: istekte

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

, göndermek: enter image description here

+0

Lütfen bu soruya gönderdiğim güncellemeye bakın. – 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);}); 

çıktı planı metin olduğunu ve bu nedenle bu çalışırsanız, json dönüştürmek gerekir.

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

Lütfen soruya gönderdiğim güncellemeye bakın. – Antoine

0

GÜNCELLEME Şimdi

ben sunucu tarafı basitçe NodeJS sunucu tarafı yöntemleri çağırmak öğrenmek gerekir NodeJs olduğunu biliyoruz:

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

Yani yaklaşımınız adildir Yanlış, kesişmek istediğiniz gereksiz veri dizisine sahipsiniz. Herhangi bir şeyi engellemeyin, jQuery veya Javascript ile sunucu denetleyicinize veya API'ye başlangıçtan iyi biçimlendirilmiş bir HTTP POST gönderin.

DoSomethingWithRecipient(string firstName, string lastName); 

Alıcınızın yanı bir userId olmalı ama bu size kalmış: API yönteminin imzası olmalıdır. Istemeyi ayrıştırabilir ve PHP veya ASP gibi DoSomethingWithRecipient işlevine eşleştiren bir Sunucu tarafı çerçeve kullanmıyorsanız.NET, çarkı hiçbir sebepten ötürü yeniden icat etmekten daha büyük.

jQuery ile daha basitçe şöyle bir Ajax HTTP Post gerçekleştirin:

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

Lütfen soruya gönderdiğim güncellemeye bakın. – Antoine

+0

Şablon altyapısının şablon motoru biçimindeki bilgisini neden saklamıyorsunuz? Şablonu, göndermeden önce şablon motorunda JSON oluşturun –

İlgili konular