كيف يمكنني إرسال مجموعة من كائن JavaScript إلى برنامج نصي PHP عبر $ .post؟

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

سؤال

لدي جدول البيانات على صفحتي. الأعمدة "تبدأ"، "إنهاء"، "تعليق"، و "الخيارات". ضمن عمود الخيارات هو زر لحذف الصف، وزر يجعل صف من الجدول الصلب. يسمح هذا بقيم "البدء"، "إنهاء"، و "التعليق" لتغييرها. يؤدي النقر فوقه مرة أخرى إلى انتهاء عملية التحرير. أخيرا، هناك طريقة لإضافة صف آخر إلى الجدول. كل هذا يعمل كما هو متوقع.

أريد إضافة زر في الأسفل الذي ينشئ صفيفا من البيانات في الجدول، الذي يشبه هذا (يمثل json بحتة لسهولة العرض إلى ذلك: غير مطلوب):

[
    {
        "start"     :"2009/08/01",
        "end"       :"2009/08/08",
        "comment"   :"an example date.",
    },
    {
        "start"     :"2009/07/01",
        "end"       :"2009/07/08",
        "comment"   :"another example date, a month earlier.",
    },
    {
        "start"     :"2000/07/01",
        "end"       :"2000/07/08",
        "comment"   :"another example date, a year earlier. You get the idea.",
    }
]

لا يجب أن أحصل على الكثير من المتاعب في بناء الصفيف، ولكن بمجرد أن يكون لدي، كيف يمكنني نشرها إلى برنامج نصي php backend (والتي ستستخدمها بعد ذلك put_csv() لكتابة البيانات إلى ملف)؟ من الناحية المثالية، سيكون من جانب خادم متوفر بتنسيق صفيف، للسماح بالتحقق من الصحة.

أنا سعيد لاستخدام jquery، إذا كان مطلوبا.

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

المحلول

كيف تنتهي به إلى الخادم يعتمد على ماذا تريد أن أرشف. إذا كنت ترغب في تحميل صفحة جديدة، فستعالج البيانات، يمكنك استخدام نموذج شامل مع مدخلات مخفية. بدلا من ذلك، إذا كنت ترغب في معالجة موجودة في الخلفية عبر Ajax، استخدم jQuery.ajax كما قال كراسكو. في كلتا الحالتين التي تستخدمها، تحتاج إلى تحويل الصفيف المنظم إلى قائمة مفتاح / قيمة بسيطة.

خيار واحد هو إنشاء مستند JSON (لا أعتقد أن JQuery يوفر وظيفة لهذا الغرض، ولكن يمكنك بسهولة العثور على شيء) واستخدام حقل واحد مع المستند المسلسل. ثم على جانب الخادم سوف تستخدمها json_decode للحصول على صفيف الظهر. إذا كنت تستخدم طريقة AJAX، فإن خيار البيانات في jQuery.ajax سوف تحتوي المكالمة على:

{
    'data': '[{"start":"2009/08/01","end":"2009/08/08","comment":"an example date."},...'
}

سيكون النهج الأفضل تسلسله إلى قائمة الحقول بتنسيق يفهم PHP أصلا. وهذا يعني أن عليك أن تفعل شيئا خاصا، و $_POST['data'] سوف تحتوي على الصفيف. علي سبيل المثال:

{
    'data[0][start]': '2009/08/01',
    'data[0][end]': '2009/08/08',
    'data[0][comment]': 'an example date.',
    'data[1][start]': '2009/07/01',
    'data[1][end]': '2009/07/08',
    'data[1][comment]': 'another example date, a month earlier.',
    ... 
}

إذا كنت تستخدم طريقة النموذج، فأنت بحاجة إلى إنشاء حقول الإدخال مثل:

<input type="hidden" name="data[0][start]" value="2009/08/01" />

نصائح أخرى

بالتأكيد أود استخدام jQuery. فيما يلي الصفحة للحصول على وظيفة $ .Post ().

http://docs.jquery.com/ajax/jquery.post.

تحذير واحد هو أن $ .post () عبارة عن غلاف لوظيفة $ .jax () المبسطة وتزيل قدرتك على تعيين عمليات الاسترجاعات لأي شيء سوى نشر ناجح. للمعاملات المهمة عبر Ajax، أود استخدام هذا:

http://docs.jquery.com/ajax/jquery.ajax.

مثال على ذلك:

$.ajax({
      url: "script.php",
      global: false,
      type: "POST",
      data: ({id : this.getAttribute('id')}),
      dataType: "html",
      success: function(msg){
         alert(msg);
      }
   });
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top