একাধিক পরামিতি jQuery আজাক্স কলটিতে পাস করুন


99

একটি এসপেক্স পৃষ্ঠাতে একটি ওয়েবমেডুডকে কল করার জন্য আমার কাছে নীচের jquery কোড রয়েছে

$.ajax({
    type: "POST",
    url: "popup.aspx/GetJewellerAssets",
    contentType: "application/json; charset=utf-8",
    data: '{"jewellerId":' + filter + '}',
    dataType: "json",
    success: AjaxSucceeded,
    error: AjaxFailed
});

এবং এখানে ওয়েব পদ্ধতি স্বাক্ষর

[WebMethod]
public static string GetJewellerAssets(int jewellerId)
{

এটি কাজ করে।

তবে এখন আমার ওয়েব পদ্ধতিতে দুটি পরামিতি পাস করা দরকার

নতুন ওয়েব পদ্ধতিটি দেখতে এমন দেখাচ্ছে

[WebMethod]
public static string GetJewellerAssets(int jewellerId, string locale)
{
}

এই নতুন পদ্ধতির স্বাক্ষরটি সফলভাবে কল করতে আমি কীভাবে ক্লায়েন্ট কোডটি পরিবর্তন করব?

সম্পাদনা করুন:

নিম্নলিখিত 2 টি সিনট্যাক্স কাজ করেছে

data: '{ "jewellerId":' + filter + ', "locale":"en" }',

এবং

data: JSON.stringify({ jewellerId: filter, locale: locale }),

যেখানে ফিল্টার এবং স্থানীয় স্থানীয় ভেরিয়েবল হয়


9
data: JSON.stringify({ jewellerId: filter, locale: locale })আমি প্রতিটি খুঁজে পাওয়া সবচেয়ে ভাল উপায়, ধন্যবাদ @ ক্রিসকা
ফ্র্যাঙ্ক

আপনি যদি আমার মতো দু: খিত আত্মা হন তবে আপনি হয়ত কয়েক ঘন্টা ধরে আটকে থাকতেন। JSON.stringifyআক্ষরিক কোনও অবজেক্টের সাথে ব্যবহার করার সময় , আপনাকে অবশ্যই প্যারামিটারের নামটি কোলনের সাথে অন্তর্ভুক্ত করতে হবে, সমস্ত {}ব্রেসেসের ভিতরে আবৃত । ব্যবহার JSON.stringify(objectLiteral)করে কাজ হয় না।
কালেব অ্যান্ডারসন

পদ্ধতি স্বাক্ষর মত [WebMethod] [ScriptMethod(UseHttpGet = true)] public static string TestIBAN(string ccc)?
কুইকিনেট

উত্তর:


141

প্যারামিটারগুলি পাস করার জন্য স্ট্রিং কনটেনটেশন ব্যবহার করবেন না, কেবল একটি ডেটা হ্যাশ ব্যবহার করুন:

$.ajax({
    type: 'POST',
    url: 'popup.aspx/GetJewellerAssets',
    contentType: 'application/json; charset=utf-8',
    data: { jewellerId: filter, locale: 'en-US' },
    dataType: 'json',
    success: AjaxSucceeded,
    error: AjaxFailed
});

হালনাগাদ:

মন্তব্য বিভাগে @ অ্যালেক্সের পরামর্শ অনুসারে, একটি এএসপি.নেট পেজমথোদ অনুরোধে জেএসওএন এনকোডেড হওয়া প্যারামিটার আশা করে, তাই JSON.stringifyডেটা হ্যাশটিতে প্রয়োগ করা উচিত:

$.ajax({
    type: 'POST',
    url: 'popup.aspx/GetJewellerAssets',
    contentType: 'application/json; charset=utf-8',
    data: JSON.stringify({ jewellerId: filter, locale: 'en-US' }),
    dataType: 'json',
    success: AjaxSucceeded,
    error: AjaxFailed
});

12
JSON.stringify( myObject )জাভাস্ক্রিপ্ট অবজেক্ট থেকে জেএসএন স্ট্রিং তৈরি করতে ব্যবহার করার বিষয়টিও বিবেচনা করুন , যদি আপনি পরবর্তীতে আপনার পরামিতিগুলিকে কোনও শ্রেণিতে গ্রুপ করতে চান want
অ্যালেক্স বাগনোলিনি

1
জবাবগুলির জন্য ধন্যবাদ - তবে আমি যখন এটির মতো চেষ্টা করি তখন আমি একটি এইচটিসি স্ট্যাটাস 500 পাই। কোন ধারনা? বা এমনকি এটি ডিবাগ কিভাবে? ওয়েব পদ্ধতিতে ব্রেকপয়েন্টটি কখনই আঘাত হানে না
ক্রিসকা

1
নতুন কোডটি নিম্নরূপ $ .জ্যাক্স ({প্রকার: 'পোস্ট', ইউআরএল: 'পপআপ.এএসপিএক্স / গেটজেলিয়ার অ্যাসেটস', সামগ্রী টাইপ: 'অ্যাপ্লিকেশন / জেএসন; চরসেট = ইউটিএফ -8', ডেটা: wel জুয়েলারআইডি: ফিল্টার, স্থানীয়: 'এন -ইউএস}, ডেটা টাইপ: "জসন", সাফল্য: অ্যাজাক্সসক্রিস্টড, ত্রুটি: আজাক্সফয়েল});
ক্রিসকা

1
ডিবাগ করতে প্রথমে সার্ভারের সঠিক প্রতিক্রিয়া কী তা ফায়ারবাগের দিকে দেখুন, তারপরে ওয়েব পরিষেবা পদ্ধতিতে একটি ব্রেক পয়েন্ট রেখে তা পৌঁছেছে কিনা দেখুন।
দারিন দিমিত্রভ

1
ব্রেকপয়েন্ট ওয়েব পদ্ধতি কখনও আঘাত পরার ফায়ারবাগকে শো: "message": "অবৈধ JSON আদিম: jewellerId।", "ক্ষেত্রে স্টেকট্র্যাস": "System.Web.Script.Serialization তাই আমি এ JSON বাক্য গঠন প্রণালী অনুমান ভুল
ChrisCa

18
data: '{"jewellerId":"' + filter + '","locale":"' + locale + '"}',

1
এটি কাজ করেছে: 'je "jewellerId":' + ফিল্টার + ', "লোকেল": "এন"}', (সম্ভবত আমি লোকেলের জন্য এনডিতে হার্ডকোডিং করব না, তবে এটি কাজ করে সিনট্যাক্স।
ক্রিসকা

এটি এমভিসি 3 দিয়ে আমার জন্য কাজ করেছিল আমি ডারিনের কাজ করার উপায়টি পাইনি - সম্ভবত এটি এমভিসি 3 জিনিস।
ফিয়াট

7

আপনার ডেটা অবজেক্টে যতগুলি প্রোপার্টি প্রয়োজন কেবল তা যুক্ত করুন।

 $.ajax({
                    type: "POST",
                    url: "popup.aspx/GetJewellerAssets",
                    contentType: "application/json; charset=utf-8",
                    data: {jewellerId: filter , foo: "bar", other: "otherValue"},
                    dataType: "json",
                    success: AjaxSucceeded,
                    error: AjaxFailed
                });

1
dataসার্ভার সাইডে থাকা বৈশিষ্ট্যগুলি পড়তে এই ক্ষেত্রে ওয়েবমেডোথার স্বাক্ষরটি কেমন হবে ?
ফ্লো

5

এজ্যাক্স কল ব্যবহার করে ডেটা প্রেরণে নীচের পদ্ধতিটি ব্যবহার করবেন না

data: '{"jewellerId":"' + filter + '","locale":"' + locale + '"}'

যদি ভুল করে ব্যবহারকারী একক উদ্ধৃতি বা ডাবল উদ্ধৃতি জাতীয় চরিত্র প্রবেশ করে তবে ভুল স্ট্রিংয়ের কারণে এজাক্স কল ব্যর্থ হয়।

কোনও সমস্যা ছাড়াই ওয়েব পরিষেবাতে কল করতে নীচের পদ্ধতিটি ব্যবহার করুন

var parameter = {
       jewellerId: filter,
       locale : locale 
};


data: JSON.stringify(parameter)

উপরের প্যারামিটারে জাভাস্ক্রিপ্ট অবজেক্টের নাম এবং এজাক্স কলের ডেটা অ্যাট্রিবিউটে পাঠানোর সময় এটি স্ট্রিংফাই করা হয়।


3

অন্য কেউ কি খেয়াল করেছেন যে ডেভিড হেডলুন্ডের বাদে জাসন স্ট্রিং / অবজেক্টটি সমস্ত উত্তরে অবৈধ? :)

JSON অবজেক্টগুলি নিম্নলিখিত পদ্ধতিতে ফর্ম্যাট করতে হবে: key "কী": ("মান" | 0 | মিথ্যা)}} এছাড়াও, স্ট্রিং হিসাবে এটি লেখার জন্য অবজেক্টটির স্ট্রিংফাইংয়ের চেয়ে অনেক কম ...


3
$.ajax({
    type: 'POST',
    url: 'popup.aspx/GetJewellerAssets',      
    data: "jewellerId=" + filter+ "&locale=" +  locale,  
    success: AjaxSucceeded,
    error: AjaxFailed
});

প্রকারটি ব্যবহার করে খুব বেশি কাজ করছেন : জিইটি ?
কুইকিনেট

অথবা আপনি jason.stringyfy (অ্যারে) তে ডেটা পাস করার জন্য একটি অ্যারে ব্যবহার করতে পারেন।
শেখর প্যাটেল

1

কেবলমাত্র যোগ করতে [এই লাইনটি Asp.net এ নিখুঁতভাবে কাজ করে এবং জেসন উদাহরণস্বরূপ ওয়েব-নিয়ন্ত্রণ ক্ষেত্রগুলি সন্ধান করুন: <% ক্ষেত্রের নাম%>]

 data: "{LocationName:'" + document.getElementById('<%=txtLocationName.ClientID%>').value + "',AreaID:'" + document.getElementById('<%=DropDownArea.ClientID%>').value + "'}",

1
    var valueOfTextBox=$("#result").val();
    var valueOfSelectedCheckbox=$("#radio:checked").val();

    $.ajax({
    url: 'result.php',
    type: 'POST',
    data: { forValue: valueOfTextBox, check : valueOfSelectedCheckbox } ,
    beforeSend: function() {

          $("#loader").show();
       },
    success: function (response) {
       $("#loader").hide();
       $("#answer").text(response);
    },
    error: function () {
        //$("#loader").show();
        alert("error occured");
    }
    }); 

0

আপনার পাস করা ডেটা সম্পর্কে এটি সমস্ত; স্ট্রিংটি সঠিকভাবে ফর্ম্যাট করতে হবে। আপনি যদি খালি ডেটা দিয়ে যাচ্ছেন তবে ডেটা: {। কাজ করবে। তবে একাধিক প্যারামিটারের সাথে এটি সঠিকভাবে ফর্ম্যাট করতে হবে যেমন

var dataParam = '{' + '"data1Variable": "' + data1Value+ '", "data2Variable": "' + data2Value+ '"' +  '}';

....

ডেটা: ডেটাপরাম

...

বোঝার সর্বোত্তম উপায় হ'ল সঠিক বার্তা প্যারামিটার সহ ত্রুটি হ্যান্ডলার রয়েছে, যাতে বিশদ ত্রুটিগুলি জানতে পারে।


0

আমি json ব্যবহার করে সফলভাবে একাধিক পরামিতি পেরিয়েছি

data: "{'RecomendeeName':'" + document.getElementById('txtSearch').value + "'," + "'tempdata':'" +"myvalue" + "'}",

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