কীভাবে getJSON ব্যবহার করবেন, পোস্ট পদ্ধতি সহ ডেটা প্রেরণ করবেন?


107

আমি উপরের পদ্ধতিটি ব্যবহার করছি এবং এটি URL এ একটি প্যারামিটারের সাথে ভাল কাজ করে।

যেমন Students/getstud/1যেখানে নিয়ামক / ক্রিয়া / পরামিতি বিন্যাস প্রয়োগ করা হয়।

এখন আমার কাছে স্টুডেন্টস কন্ট্রোলারে একটি ক্রিয়া রয়েছে যা দুটি পরামিতি গ্রহণ করে এবং একটি JSON অবজেক্ট ফেরত দেয়।

তাহলে আমি কীভাবে $.getJSON()পোস্ট পদ্ধতি ব্যবহার করে ডেটা পোস্ট করব?

অনুরূপ পদ্ধতিগুলিও গ্রহণযোগ্য।

পয়েন্টটি হ'ল এজেএক্স সহ নিয়ন্ত্রকের একটি ক্রিয়াকলাপ।


4
getমধ্যে getJSONউপায়ে ব্যবহার পেতে কিছু JSON জন্য।
— মজিদ ফৌলদপুর

1
@ মাজিদ ফৌলদপুর যখন আমি এই প্রশ্নটি জিজ্ঞাসা করছিলাম তখন আমি তা জানতাম না ..!
— বিকাশ

উত্তর:


216

Get .getJSON () পদ্ধতিটি একটি HTTP পায় এবং পোষ্ট করে না। আপনার পোষ্ট () ব্যবহার করতে হবে

$.post(url, dataToBeSent, function(data, textStatus) {
  //data contains the JSON object
  //textStatus contains the status: success, error, etc
}, "json");

সেই কলটিতে, dataToBeSentআপনি চান এমন কিছু হতে পারে, যদিও এইচটিএমএল ফর্মের বিষয়বস্তু প্রেরণ করা হচ্ছে, আপনি নিজের ফর্ম থেকে পোষ্টের জন্য ডেটা তৈরি করতে সিরিয়াল পদ্ধতিটি ব্যবহার করতে পারেন ।

var dataToBeSent = $("form").serialize();

7
দুর্ভাগ্যক্রমে $ .getJSON সমর্থন করে Jsonp (ক্রস ডোমেন অ্যাক্সেস) যুক্ত করতে চান ost .পোস্ট না।
— টমাস

2
আসলে .getJSON () দুটি উপায়ে ক্রস ডোমেন অ্যাক্সেস সমর্থন করে। জেএসএনপি, যা জিইটি বা পোস্ট ব্যবহার করে না তবে স্ক্রিপ্ট ইনজেকশন ব্যবহার করে; তবে CORS - এবং .post () এছাড়াও CORS সমর্থন করে। তবে সিওআরএসের প্রয়োজন সার্ভারটিও এটি সমর্থন করে যেখানে জেএসএনপি এটি সমর্থন করে না।
— হিপ্পিট্রেইল

2
সত্য নয়, জেএসওএনপি-র কলব্যাক পরামিতি পার্স করতে সার্ভার সমর্থনও প্রয়োজন।
— শ্রুলিক

আমি যখন উপরের ফাংশনটি ব্যবহার করছি তখন আমি একটি জসন বস্তুর পরিবর্তে একটি স্ট্রিং অবজেক্ট পাচ্ছি।
— প্রতীক সিংহল

13

এটি আমার "এক-লাইন" সমাধান:

$.postJSON = function(url, data, func) { $.post(url+(url.indexOf("?") == -1 ? "?" : "&")+"callback=?", data, func, "json"); }

Jsonp, এবং POST পদ্ধতি ব্যবহার করার জন্য, এই ফাংশনটি URL টিতে "কলব্যাক" GET পরামিতি যুক্ত করে। এটি এটি ব্যবহার করার উপায়:

$.postJSON("http://example.com/json.php",{ id : 287 }, function (data) {
   console.log(data.name);
});

কলব্যাক জিইটি প্যারামিটারটি পরিচালনা করতে এবং জাসন স্ট্রিংটি ফেরত দিতে সার্ভারকে অবশ্যই প্রস্তুত থাকতে হবে:

jsonp000000 ({"name":"John", "age": 25});

যার মধ্যে "jsonp000000" হল কলব্যাক জিইটি মান।

পিএইচপি-তে বাস্তবায়নটি এমন হবে:

print_r($_GET['callback']."(".json_encode($myarr).");");

আমি কিছু ক্রস-ডোমেন পরীক্ষা করেছি এবং এটি কার্যকর বলে মনে হচ্ছে। তবুও আরও পরীক্ষার প্রয়োজন।


1
এটি কখনই জিইটি-র সীমাটি বাইপাস করবে না যখন সর্বাধিক আকারের পোস্টের নতুন সংজ্ঞা দেওয়া যেতে পারে।
— ডেমেন্টিক

আপনি যুক্ত করলেন কেন ?callback? ইউআরএল এ? এটি কলব্যাকটি আমার জন্য ডাকা হবে না। আমিও যোগ করেছিলাম JSON.stringify(data)। +1, সহায়ক পোস্ট!
— আয়নিক বিজাউ

@ আয়নিকবিজাউ: ধন্যবাদ কোনও বস্তু ফেরত দেওয়ার জন্য, আমাদের ইউআরএলটিতে "কলব্যাক" পরামিতি যুক্ত করতে হবে এবং সার্ভারের জিকুয়েরির দ্বারা উত্পন্ন একই বস্তুর নামটি ফিরিয়ে আনতে হবে। : আমিও getJSON একটি ওভাররাইড ফাংশন () ব্যবহারjQuery.getJSON = function(url, data, func) { return $.get(url+(url.indexOf("?") == -1 ? "?" : "&")+"callback=?", data, func, "json"); }
— Lepe

7

কেবল আপনার এই লাইনগুলি যুক্ত করুন <script>(কোথাও jQuery লোড হওয়ার পরে তবে কিছু পোস্ট করার আগে):

$.postJSON = function(url, data, func)
{
    $.post(url, data, func, 'json');
}

(কিছু / সব) প্রতিস্থাপন $.getJSONসঙ্গে $.postJSONএবং উপভোগ করেন!

আপনি একই জাভাস্ক্রিপ্ট কলব্যাক ফাংশন ব্যবহার করতে পারেন $.getJSON। কোনও সার্ভার-পার্শ্ব পরিবর্তন প্রয়োজন হয় না। (ভাল, আমি সর্বদা $_REQUESTপিএইচপি ব্যবহার করার পরামর্শ দিই । Http://php.net/manual/en/reided.variables.request.php , $ _REQQUEST, $ _GET এবং _P _P পোস্টের মধ্যে কোনটি দ্রুততম? )

এটি @ লেপের সমাধানের চেয়ে সহজ।


এটি সম্পন্ন () এবং ব্যর্থ () পদ্ধতিগুলির সাথে কাজ করে না যা আপনি জেএসএসএন এ সাধারণত প্রয়োগ করতে পারেন।
— হ্যাকওয়েট

3

আমার কোড ছিল যা জেএসএসএন করছিল। আমি কেবল পোস্ট দিয়ে এটি প্রতিস্থাপন। আমার অবাক করার বিষয়, এটি কাজ করেছিল

   $.post("@Url.Action("Command")", { id: id, xml: xml })
      .done(function (response) {
           // stuff
        })
        .fail(function (jqxhr, textStatus, error) {
           // stuff
        });



    [HttpPost]
    public JsonResult Command(int id, string xml)
    {
          // stuff
    } 

3

আমি সবেমাত্র পোস্ট এবং একটি ব্যবহার করেছি:

data = getDataObjectByForm(form);
var jqxhr = $.post(url, data, function(){}, 'json')
    .done(function (response) {
        if (response instanceof Object)
            var json = response;
        else
            var json = $.parseJSON(response);
        // console.log(response);
        // console.log(json);
        jsonToDom(json);
        if (json.reload != undefined && json.reload)
            location.reload();
        $("body").delay(1000).css("cursor", "default");
    })
    .fail(function (jqxhr, textStatus, error) {
        var err = textStatus + ", " + error;
        console.log("Request Failed: " + err);
        alert("Fehler!");
    });

1

$.getJSON()একটি AJAX অনুরোধ প্রেরণ এবং প্রতিক্রিয়া হিসাবে JSON ডেটা ফিরে পেতে খুব সহজ। হায়, jQuery ডকুমেন্টেশনে একটি বোনের ফাংশন নেই যার নাম দেওয়া উচিত $.postJSON()। কেন কেবল এটি ব্যবহার করেই $.getJSON()করা হবে না? ঠিক আছে, সম্ভবত আপনি প্রচুর পরিমাণে ডেটা প্রেরণ করতে চান বা আমার ক্ষেত্রে, আই 7 কেবল জিইটি অনুরোধের সাথে সঠিকভাবে কাজ করতে চায় না।

এটি সত্য, বর্তমানে কোনও $.postJSON()পদ্ধতি নেই তবে আপনি $.post()ফাংশনে একটি চতুর্থ প্যারামিটার (টাইপ) নির্দিষ্ট করে একই জিনিসটি সম্পাদন করতে পারবেন :

আমার কোডটি এরকম দেখাচ্ছে:

$.post('script.php', data, function(response) {
  // Do something with the request
}, 'json');

-8

আপনার যদি মাত্র দুটি প্যারামিটার থাকে তবে আপনি এটি করতে পারেন:

$.getJSON('/url-you-are-posting-to',data,function(result){

    //do something useful with returned result//
    result.variable-in-result;
});

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