2010-03-14 14 views
5

Json'un json iadesi için çalışmasına ve ayrıştırılmasına hiç bir problemim yok. Dinamik bir "her ne olursa olsun veri" yi nasıl oluşturabileceğimi ve parametrelerimi oradan iletmek ve URL'ye manuel olarak eklememek için [veri] 'ye nasıl yapıştıracağımı merak ediyordum. jQuery web sitesi örnekten

:

$.getJSON("test.js", { name: "John", time: "2pm" }, function(json){ 
    alert("JSON Data: " + json.users[3].name); 
}); 

I (zaten mantıklı değil ki) ve {}, ama belli ki o bölümü anlamıyorum içine bırakın ben bir dize inşa edebileceğini düşündü.

name: bir dize değil ve bu parçaya değişken koyamazsınız, bu yüzden öğeleri dinamik olarak [veri] 'ye nasıl koyabilirim?

GÜNCELLEME: Cevaplar için teşekkürler. Eğer daha sonra geçerli bir değer bulamadım ya da onu yok etmem ve yeniden yaratmam gerekiyorsa, bir parametre ismini nesneden kaldırabilir miyim? Bazı şeyleri seçmek için bazı kutular seçiyorum ve bu parametrenin adını/değerini geçmek istemediğim bir şey seçmedim. Bunu yapabilecek

+0

benim güncellenen cevap – Pointy

cevap

13

Böyle senin nesneyi inşa edebilirsiniz: Elbette

var someVar = someRandomString(); 
$.getJSON('test.js', (function() { 
    var theData = {}; 
    theData[someVar] = someRandomValue(); 
    return theData; 
})(), function(jsonStuffFromServer) { 
    alert("JSON Data: " + jsonStuffFromServer.users[3].name); 
}); 

anonim bir işlevde orada itiraz "veriler" kurmak gerekmez; ayrı önceden yapabilirsiniz:

var theData = {}; 
$('#myForm select').filter(function() { return $(this).val() != ''; }) 
    .each(function() { 
    theData[this.name] = $(this).val(); 
    }); 

$.getJSON(url, theData, function(jsonStuff) { ... }); 
+0

sayesinde dinamik da, ben değerini seçilen başka seçer dayalı bir seçme yeniden doldururken değilim, bu yüzden doğru seçenekleri getirilirken am – Breadtruck

+0

@Pointy formunda dinamik olarak değişebilen belirli parametrelere göre doldurun: Bu arada, "her birini seçin" kodu gerçekten başka bir şey için gerçekten kullanışlı olabilir :) – Breadtruck

+0

Cool! Bence "seçici" nin kendisinde bir sihir kullanarak süzülmenin daha iyi bir yolu var ('#myform select' bölümü), ama nasıl yapacağımdan% 100 emin değilim ve bu sabah kahve içmedim. :-) – Pointy

1

:

var myName = $("#nameField").val(); 
var myTime = $("#timeField").val(); 

$.getJSON("test.js", { 'name': myName, 'time': myTime}, function(json){ 
    alert("JSON Data: " + json.users[3].name); 
}); 

mi demek istediğin veya dinamik parametreler yanı sıra değişkenleri?

+0

Evet bu doğru, bkz parametreleri güncelleme için – Breadtruck

0

{} yüzden adıdır bir javascript object literal geçerli:

İşte
var theData = {}; 
theData[someVariableWithANameInIt] = someRandomValue(); 
$.getJSON(url, theData, function(jsonStuff) { ... }); 

sayfanızda <select> elemanların kümesinden böyle bir nesne oluşturmak gibi uygulayabilirsiniz Bu nesnenin bir özelliği.

Böyle bir şey yapabilirsiniz: bir nesne oluşturun bu

var data = { 
    name: $("#input").val(), 
}; 
$.getJSON("test.js", data, function(json){ 
    alert("JSON Data: " + json.users[3].name); 
}); 
+1

Sanırım * isimlerinin * çalışma zamanında hesaplanmasını istiyor. – Pointy

7

gibi

var data = {}; 
data.name = $("#input").val(); 
$.getJSON("test.js", data, function(json){ 
    alert("JSON Data: " + json.users[3].name); 
}); 

Ya da bir şey, o zaman onun içinde istediğiniz herhangi özelliklerini koyabilirsiniz:

var data = new Object(); 

veya:

var data = {}; 
Sen özellik sözdizimini kullanabilirsiniz

:

data['name'] = 'John'; 
data['time'] = '2pm'; 

yapabilirsiniz kurs kullanım değişkenlerinin değerleri için: (parametre adı bir anahtar kelime ise yararlıdır)

data.name = 'John'; 
data.time = '2pm'; 

veya ortak dizi sözdizimi Sonra sadece çağrısında veri değişken kullanın

var param = 'name'; 
var value = 'John'; 
data[param] = value; 

: ve hatta parametre adını belirtmek için değişkenler kullanmak :

$.getJSON("test.js", data, function(json){ 
    alert("JSON Data: " + json.users[3].name); 
}); 
+0

Sanırım anladım. Daha sonra geçerli bir değer bulamadım bir parametre adı kaldırmak mümkün olabilir mi? Bazı şeyleri seçmek için bazı kutular seçiyorum ve bu parametrenin adını/değerini geçmek istemediğim bir şey seçmedim. – Breadtruck

+0

Nesneyi önceden oluşturmak zorunda değilsiniz. Sadece ' a göre oluşturun ve sadece değerlere sahip olanları ekleyin. – Pointy

+0

Demek istediğim, en üstteki seçimi seçtiğinizde baştan başlamanız gerekir, bu nedenle alt seçimler konuşulacak şekilde sıfırlanır. – Breadtruck

İlgili konular