मेरे पास लगभग बीस text-box, checkbox और select के साथ-साथ चार फ़ाइल प्रकार के इनपुट हैं। मैं Laravel और AJAX का उपयोग करके इनपुट को डेटाबेस में सहेजना चाहता हूं।

असल में, मैं फ़ाइल प्रकार (छवियों) को छोड़कर को छोड़कर सभी इनपुट सहेज सकता हूं।

तालिका: META | VALUE

मेरा मार्ग: $this::resource('/settings','SettingController')->only(['index', 'store']);

नियंत्रक:

$setting = $request->all();
foreach ($setting as $meta => $value) {
    $SF = new Setting();
    $SF->meta = $meta;
    $SF->value = $value;
    echo  $SF->save();
}

एचटीएमएल:

<form>
 <input type="text" name="site_title"  id="site-title">
 <input type="checkbox" name="register"  id="register">
  ....
 <input type="file" name="logo"  id="logo">
 <input type="file" name="favicon"  id="favicon">
 <input type="file" name="user_profile"  id="user_profile">
 <input type="file" name="Personal"  id="Personal">

AJAX कोड:

 $('#setting-forms').on('submit', function () {
    event.preventDefault();
    let _token =  $('input[name=_token]').val();  //Get Token
    let FormInputs = $("#setting-forms").serialize(); 

    $.ajax({
        method: 'POST',
        url: '/settings',
        data: FormInputs ,

        success: function (data) {
          //Some Success MSG

        },
        error: function () {
             //Some Error MSG
        },
    });

अब, यह कोड फ़ाइल प्रकारों को छोड़कर सभी इनपुट सहेजता है और मेरा परिणाम कुछ ऐसा है:

     META     |     VALUE
--------------+--------------
   site_title |   Laravel
    register  |     On
      ....    |     ...

लेकिन मैं सभी छवि फ़ाइलों को भी सहेजना चाहता हूं, इसलिए मैंने अपना AJAX कोड निम्न में बदल दिया:

 let formData = new FormData();
 let logo = $("#logo")[0].files[0];
 formData.append('logo', logo);
 formData.append('FormInputs', FormInputs);
 $.ajax({
        method: 'POST',
        url: '/settings',
        data: formData,
        contentType: false,
        processData: false,
        headers: {
            'X-CSRF-TOKEN': _token
        },

अब मैं लोगो को सहेज सकता हूं लेकिन मेरा टेक्स्ट एक ही पंक्ति में सहेजा गया है। मैंने इसे प्राप्त किया:

     META     |                Value
--------------+-----------------------------------
     Logo     |               MyLOGO
   FormInputs |  site_title=titlea&register=on&...

जबकि मुझे ऐसा कुछ चाहिए:

     META     |     VALUE
--------------+--------------
    Logo      |    MyLOGO
  site_title  |    title
   register   |     On

मैं इसे कैसे ठीक करूं?

1
siros 2 जून 2018, 22:13

1 उत्तर

सबसे बढ़िया उत्तर

खैर, 3 दिन के बाद आखिरकार मेरा जवाब मिल गया। इसलिए, अगर किसी को जरूरत है या मेरी समस्या है तो मैंने अपना कोड यहां रखा है।

उपरोक्त कोड काम है बस कुछ बदलावों की जरूरत है और यहां बदलाव हैं।

//let FormInputs = $("#setting-forms").serialize();  
  let FormInputs = $("#setting-forms").serializeArray();

 // formData.append('FormInputs', FormInputs);
 jQuery.each(FormInputs, function (i, field) {
        formData.append(field.name, field.value);
 });

अच्छा, अब ठीक काम करो।

0
siros 6 जून 2018, 16:51