باستخدام JQuery $ GetJson كيف يمكنني إنشاء بيانات ديناميكيا لمعلمة [البيانات] بعد عميل URL؟

StackOverflow https://stackoverflow.com/questions/2442085

  •  19-09-2019
  •  | 
  •  

سؤال

ليس لدي أي مشاكل في الحصول على JSON للعمل وتحليل عودة JSON. كنت أتساءل فقط كيف يمكنني بناء ديناميكية "مهما كانت البيانات" وتتمسك بها في [البيانات] لتمرير معلماتي من هناك ولا إلحاقها يدويا على عنوان URL.

من موقع JQuery Website:

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

اعتقدت أنني أستطيع بناء سلسلة (والتي لا معنى لها على أي حال) وإسقاطها داخل {}، ولكن من الواضح أنني لا أفهم هذا الجزء.

الاسم: ليست سلسلة ولا يمكنك وضع متغير في هذا الجزء، فكيف يمكنني وضع العناصر ديناميكيا في أي شيء [بيانات].

تحديث: شكرا على الإجابات. هل سأتمكن من إزالة اسم المعلمة من الكائن إذا لم أجد قيمة صالحة في وقت لاحق أو أحتاج إلى تدميرها وإعادة إنشاءها؟ أنا أستخدم بعض صناديق الاختيار لاختيار الأشياء وقد لا يكون لدي شيء محدد لذلك لن أرغب في تمرير اسم / قيمة المعلمة.

هل كانت مفيدة؟

المحلول

يمكنك بناء كائنك مثل هذا:

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

بالطبع ليس لديك لبناء كائن "البيانات" الموجود في وظيفة مجهولة؛ يمكنك القيام بذلك بشكل منفصل مسبقا:

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

إليك كيف يمكنك بناء مثل هذا الكائن من مجموعة من <select> عناصر في صفحتك:

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

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

نصائح أخرى

قم بإنشاء كائن، ثم يمكنك وضع أي خصائص تريد فيها:

var data = new Object();

أو:

var data = {};

يمكنك استخدام بناء جملة الخاصية:

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

أو بناء جملة صفيف مشارك (وهو مفيد إذا كان اسم المعلمة كلمة رئيسية):

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

يمكنك بسهولة استخدام المتغيرات للقيم، وحتى استخدام المتغيرات لتحديد اسم المعلمة:

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

ثم يمكنك فقط استخدام متغير البيانات في المكالمة:

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

يمكنك ان تفعلها:

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

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

هل هذا ما تقصده، أو المعلمات الديناميكية وكذلك المتغيرات؟

{} هو جافا سكريبت كائن حرفي لذلك الاسم هو خاصية هذا الكائن.

يمكنك أن تفعل شيئا مثل هذا:

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

أو شيء مثل هذا

var data = {
    name: $("#input").val(),
};
$.getJSON("test.js", data, function(json){
     alert("JSON Data: " + json.users[3].name);
});
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top