jQuery - জমা দেওয়ার জন্য অতিরিক্ত প্যারামিটার যুক্ত করুন (এজ্যাক্স নয়)


206

JQuery এর 'সাবমিট' ব্যবহার করে - কোনও ফর্মের অতিরিক্ত পরামিতিগুলি পাশ করার কোনও উপায় আছে কি? আমি আজাক্সের সাথে এটি করতে চাইছি না - এটি স্বাভাবিক, রিফ্রেশ-সাধারণ ফর্ম জমা।

$('#submit').click(function () {
    $('#event').submit(function () {
        data: { 
        form['attendees'] = $('#attendance').sortable('toArray').toString();
    });
});

আপনি কোন সার্ভার সাইড প্রযুক্তি ব্যবহার করছেন?
এনরিক

আমার উত্তর দেখুন [এখানে] [1], যা জমা দেওয়ার আগে সিরিয়ালযুক্ত ফর্মটিতে সংযোজন হয়। [1]: স্ট্যাকওভারফ্লো.com
জেফ লোয়ার

উত্তর:


371

এটি আমার জন্য এটি করেছে:

var input = $("<input>")
               .attr("type", "hidden")
               .attr("name", "mydata").val("bla");
$('#form1').append(input);

ড্যাফের উত্তরের উপর ভিত্তি করে তৈরি করা হয়েছে, তবে ফর্ম সংকলনে এটি দেখানোর জন্য NAME বৈশিষ্ট্য যুক্ত করেছে এবং ভ্যালুকে ভ্যালিতে পরিবর্তন করা হয়েছে এবং ফর্মের আইডিও চেক করেছে (আমার ক্ষেত্রে ফর্ম 1)

উপাদানটি sertedোকানো হয়েছে কিনা তা পরীক্ষা করতে ফায়ারফক্স ফায়ারব্যাগ ব্যবহার করেছেন।

লুকানো উপাদানগুলি ফর্ম সংকলনে আবার পোস্ট হয়, কেবল পঠনযোগ্য ক্ষেত্রগুলি বাতিল করা হয়।

মিশেল


46
বাইনারিতে আমি কীভাবে 'আপনি আমার রোদ' গাইবেন? তোমাকে অনেক ধন্যবাদ. এটি এত কিছুর সমাধান করে।
সিল

38
আপনি সামান্য পাঠযোগ্যতার উন্নতি করতে পারবেন: var ইনপুট = $ ("<ইনপুট>", {প্রকার: "লুকানো", নাম: "মায়াডাটা", মান: "ব্লে";); $ ( '# form1') পরিশেষে যোগ ($ (ইনপুট))।
কনস্ট্যান্টাইন কালবাজভ

2
; ("<ইনপুট>")। অ্যাট্রাট ("টাইপ", "লুকানো")। অ্যাটর ("নাম", "মায়াডাটা") অন্য উপায়
কিয়েভ

6
আমি এর কম্বো পছন্দ করেছি: $ ("<ইনপুট>", {প্রকার: "লুকানো", নাম: "মায়াডাটা", মান: "ব্লে"}) app অ্যাপেন্ডটো ("# ফর্ম 1");
গ্যাবিও

তথ্য আকারের কোন সীমা নেই? আমি JSON.stringify (Obj) এবং এই পদ্ধতিটি ব্যবহার করে কিছু বড় অবজেক্ট পাঠিয়েছি এবং এটি কেটে গেছে বলে মনে হচ্ছে।
ওমিক্রন

26

আপনার ক্ষেত্রে গতিশীলভাবে আপনার ফর্মের সাথে অন্য কোনও লুকানো ক্ষেত্র যুক্ত করা যথেষ্ট।

var input = $("<input>").attr("type", "hidden").val("Bla");
$('#form').append($(input));

আমার যে ডেটা জমা দিতে হবে তা ফর্ম-সক্ষম নয়। এটি সার্ভারের দিকে ক্যাপচার এবং পরিচালনা করতে হবে।
সিয়েল

"ফর্ম সক্ষম নয়" বলতে কী বোঝ?
ভিনসেন্ট রামধনি

দুঃখিত - এটি মোটেও কার্যকর হয়নি। এমনকি কেবল জোরপূর্বক ডেটা থাকা সত্ত্বেও, এটি এটিকে ফর্মের মধ্যে ইনজেক্ট করে না।
সিয়েল

এটি কোনও ফর্ম ক্ষেত্রে স্থাপন করা যাবে না।
সিয়েল

2
যদি এটির স্ট্রিং থাকে তবে এটি কোনও ফর্ম ক্ষেত্রে স্থাপন করা যেতে পারে
পিটারসেনডিডআইটি

19

আপনি এটি ব্যবহার করতে পারেন। আমার জন্য ভাল কাজ করেছে

$("#registerform").attr("action", "register.php?btnsubmit=Save") 
$('#registerform').submit();

এটি btnsubmit = জমা দিন GET মান হিসাবে সংরক্ষণ করুন।


এটি আরও মার্জিত সমাধানের মতো বলে মনে হচ্ছে। encodeURIComponent()তথ্যের ধরণের উপর নির্ভর করে পরামিতি মানের জন্য ব্যবহার করতে ভুলবেন না ।
Andres এসকে

1
ব্যবহারকারী একাধিকবার ফর্ম জমা দেওয়ার মঞ্জুরি দিলে এইটি আসলে আরও ভাল। ফর্মটি বিভিন্ন মান সহ একাধিক লুকানো ক্ষেত্র পাবে না।
মেলন

11

আপনি একটি jQuery ফাংশন লিখতে পারেন যা আপনাকে কোনও ফর্মে লুকানো ক্ষেত্রগুলি যুক্ত করতে দেয়:

// This must be applied to a form (or an object inside a form).
jQuery.fn.addHidden = function (name, value) {
    return this.each(function () {
        var input = $("<input>").attr("type", "hidden").attr("name", name).val(value);
        $(this).append($(input));
    });
};

এবং তারপরে আপনি জমা দেওয়ার আগে লুকানো ক্ষেত্র যুক্ত করুন:

var frm = $("#form").addHidden('SaveAndReturn', 'Save and Return')
                    .submit();

1
দেখুন stackoverflow.com/questions/2601223/... addHidden এর আরো উন্নত সংস্করণ জন্য
জনাথন

1
আমি এই সমাধানটির সরলতা পছন্দ করি। এটি অনেকগুলি ক্ষেত্রে পরিচালনা করে না তবে এটি দুর্দান্তভাবে কেস পরিচালনা করে।
ফিল

11

আপনার জমা দেওয়ার ইভেন্টটি কেবল জমা দেওয়ার বোতামের ক্লিকের উপর আবদ্ধ করার প্রয়োজন হবে না এবং এটি জমা দেওয়া ইভেন্টটি কীভাবে এটি ট্রিগার হয়ে যায় তা কোনও ক্যাপচার করবে না।

আপনি যা চাইছেন তা এজ্যাক্সের মাধ্যমে আপনার পছন্দ মতো বাছাইযোগ্য জমা দেওয়ার জন্য করুন। এরকম কিছু করার চেষ্টা করুন:

var form = $('#event').submit(function () {
    $.each($('#attendance').sortable('toArray'),function(i, value){
        $("<input>").attr({
            'type':'hidden',
            'name':'attendace['+i+']'
        }).val(value).appendTo(form);
    });
});

এখনও সার্ভারের দিকে ফর্মক্লেকশন দেখানো হচ্ছে না ... কোনও সার্ভারে দেখানোর জন্য কোনও লুকানো ক্ষেত্র পেতে আমাকে বিশেষ কিছু করতে হবে? এটি ফর্মকল্যান্স অবজেক্ট ব্যবহার করে সি # / এএসপি.নেট এমভিসি দিয়ে যাচ্ছে।
সিয়েল

আমার উত্তর আপডেট করেছে, মনে করি আপনি কী করতে চাইছেন তা আমি বুঝি।
পিটারসেনডিডআইটি

আপনি কি nameউত্পন্ন লুক্কায়িত ফর্ম ইনপুটটিতে একটি বৈশিষ্ট্য যুক্ত করছেন ? অনুযায়ী stackoverflow.com/questions/504681/... এটা পছন্দ FormCollection বস্তু সব প্রয়োজন দেখায় <input>নাম ধারণ করে উপাদান।
npdoty

হ্যাঁ, আমি কমা দ্বারা পৃথক হওয়া মানগুলির একটি স্ট্রিং হিসাবে ফর্মকলেকশনে একটি বাছাইযোগ্যটিকে ধাকানোর চেষ্টা করছি। আমি আপনার আপডেট চেষ্টা করেছি এবং এটি এখনও পোস্ট করে না। আমি নিশ্চিত না যে আমি কী ভুল করছি ... আমি সাহায্যের প্রশংসা করি।
সিল

সমস্যার মতো শব্দগুলি ক্লায়েন্টের দিকে নয় সার্ভারের দিকে।
পিটারসেনডিডআইটি

2

অনুরূপ উত্তর, তবে আমি কেবল এটি একটি সহজ / দ্রুত পরীক্ষার জন্য উপলব্ধ করতে চেয়েছিলাম।

var input = $("<input>")
               .attr("name", "mydata").val("go Rafa!");

$('#easy_test').append(input);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.3/jquery.min.js"></script>



<form id="easy_test">
  
</form>

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.