জাভাস্ক্রিপ্ট: Ajax সঙ্গে JSON অবজেক্ট পাঠান?


151

এটা কি সম্ভব?

xmlHttp.send({
    "test" : "1",
    "test2" : "2",
});

হতে পারে: এর সাথে একটি শিরোনাম content type: application/json?:

xmlHttp.setRequestHeader('Content-Type', 'application/json')

অন্যথায় আমি ব্যবহার করতে পারেন:

xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')

এবং তারপরে JSON.stringifyJSON অবজেক্ট করে এটি একটি প্যারামিটারে প্রেরণ করুন, তবে এটি সম্ভব হলে এটি এইভাবে পাঠানো ভাল cool

উত্তর:


330

JQuery সহ:

$.post("test.php", { json_string:JSON.stringify({name:"John", time:"2pm"}) });

JQuery ছাড়া:

var xmlhttp = new XMLHttpRequest();   // new HttpRequest instance 
xmlhttp.open("POST", "/json-handler");
xmlhttp.setRequestHeader("Content-Type", "application/json");
xmlhttp.send(JSON.stringify({name:"John Rambo", time:"2pm"}));

2
তবে মানুষ আমি বিষয়বস্তুর application/x-www-form-urlencodedধরণটি ব্যবহার করতে পারি : আমি যদি স্ট্রিংফাইও ব্যবহার করি তবে ব্যবহার করার application/jsonকী দরকার? :)
আদম

4
@ সিরক: কী ব্যাপার? সামগ্রীর ধরণের সেটিংটি সম্পূর্ণরূপে স্বেচ্ছাচারিত হয় যদি না সার্ভার একের সাথে অন্যটিকে বিশেষভাবে ব্যবহার করে। দিনের শেষে এটি কেবল পিছনে পিছনে প্রবাহিত ডেটা।
মেল্লামোকব

17
ভাল যদি আপনার পোস্ট বডি জেএসওএন হিসাবে প্রত্যাশিত যেমন উদাহরণস্বরূপ ({নাম: "জন", সময়: "দুপুর ২ টা"}) আপনার পোস্টের বডি urlncoded ডেটা (নাম = জন এবং সময় = দুপুর ২ টা) থাকে তবে অ্যাপ্লিকেশন / x-www-form-urlencoded
নাথান রোমানো

1
আমার ইউআরএল কোথায় রাখা উচিত?
অ্যারন লিউ

6
@ শুরুইলিউ "/json-handler"এই open()পদ্ধতির দ্বিতীয় পরম হিসাবে একটি ইউআরএল যায়
আলেকজান্ডার নীল

36

আপনি যদি jQuery ব্যবহার না করে থাকেন তবে দয়া করে নিশ্চিত হন:

var json_upload = "json_name=" + JSON.stringify({name:"John Rambo", time:"2pm"});
var xmlhttp = new XMLHttpRequest();   // new HttpRequest instance 
xmlhttp.open("POST", "/file.php");
xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlhttp.send(json_upload);

এবং পিএইচপি প্রাপ্তির জন্য:

 $_POST['json_name'] 

এটি সরাসরি ব্যবহার করতে পারবেন না?
রোহিতসকল

8
আমি মনে করি না যে এই প্রশ্নের উত্তর জিজ্ঞাসা করা উত্তর। আমি বিশ্বাস করি যে দেব পিএইচপি-তে JSON এর একটি ব্লবটি কনটেন্ট-টাইপ হিসাবে প্রয়োগ করতে চায়: অ্যাপ্লিকেশন / জেসন, কোনও urlncoded মোড়কে আবৃত নয়।
ফোর্ডি

1
এটি সত্যিই জেএসএনকে পাঠাচ্ছে না, এটি ফর্মডাটা ওভার পাঠাচ্ছে। আপনি সরাসরি জেএসনকে প্রেরণ করতেও পারেন, সেক্ষেত্রে আপনি এটি _P _POST দিয়ে পড়তে পারবেন না, বরং এটি json_decode (ফাইল_জেট_কন্টেন্টস ('পিএইচপি: // ইনপুট')) দিয়ে পড়তে পারেন;
ডেভিড

প্রিয় বন্ধুরা আপনি কি এই পোস্টে এজাক্সটি পৃষ্ঠায় ব্যবহার করার জন্য প্রয়োজনীয় প্রয়োজনীয় কোডের সাথে ভাগ করতে পারেন? অথবা আপনার যদি জেএসওএন
রবার্ট

1

আইডির একাধিক অ্যারে পাস করে এবং একটি ব্লাব ফিরিয়ে দেওয়ার মতো কিছু কাজ করার জন্য আমি কয়েক দিন লড়াই করেছিলাম me .NET CORE আমি ২.১ ব্যবহার করছি তা যদি সক্রিয় হয় তবে আপনাকে [ফ্রমবিডি] ব্যবহার করা উচিত এবং ডেটা ধরে রাখতে কোনও ভিউমডেল তৈরি করার প্রয়োজন হলে কেবল এটিই ব্যবহার করতে পারেন।

নীচের মত সামগ্রী গুটিয়ে নিন,

var params = {
            "IDs": IDs,
            "ID2s": IDs2,
            "id": 1
        };

আমার ক্ষেত্রে আমি ইতিমধ্যে অ্যারেগুলি json'd করেছি এবং ফলটি ফাংশনে পৌঁছেছি

var IDs = JsonConvert.SerializeObject(Model.Select(s => s.ID).ToArray());

তারপরে XMLHttpRequest POST কে কল করুন এবং অবজেক্টটি স্ট্রিংফাই করুন

var ajax = new XMLHttpRequest();
ajax.open("POST", '@Url.Action("MyAction", "MyController")', true);
ajax.responseType = "blob";
ajax.setRequestHeader("Content-Type", "application/json;charset=UTF-8");           
ajax.onreadystatechange = function () {
    if (this.readyState == 4) {
       var blob = new Blob([this.response], { type: "application/octet-stream" });
       saveAs(blob, "filename.zip");
    }
};

ajax.send(JSON.stringify(params));

তারপরে এটির মতো একটি মডেল রাখুন

public class MyModel
{
    public int[] IDs { get; set; }
    public int[] ID2s { get; set; }
    public int id { get; set; }
}

তারপর যেমন অ্যাকশন পাস

public async Task<IActionResult> MyAction([FromBody] MyModel model)

যদি আপনার কোনও ফাইল ফিরে আসে তবে এই অ্যাড-অন ব্যবহার করুন

<script src="https://cdnjs.cloudflare.com/ajax/libs/FileSaver.js/1.3.3/FileSaver.min.js"></script>

0

যোগ করার পদ্ধতি Json.stringfyJSON যে সমস্যা সংশোধন করা হয়েছে প্রায়

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