কীভাবে 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.