আমি কীভাবে এজেএক্সের মাধ্যমে "&" (অ্যাম্পারস্যান্ড) চরিত্রটি পাঠাতে পারি?


90

আমি POSTজাভাস্ক্রিপ্ট থেকে পদ্ধতিটির সাথে কয়েকটি ভেরিয়েবল এবং একটি স্ট্রিং প্রেরণ করতে চাই ।

আমি ডাটাবেস থেকে স্ট্রিংটি পাই এবং তারপরে এটি একটি পিএইচপি পৃষ্ঠায় প্রেরণ করি। আমি একটি XMLHttpRequestজিনিস ব্যবহার করছি ।

সমস্যাটি হ'ল স্ট্রিংটিতে অক্ষরটি &কয়েকবার থাকে $_POSTএবং পিএইচপি-তে অ্যারে এটি একাধিক কীগুলির মতো দেখায়।

আমি এই ফাংশনটির &সাথে প্রতিস্থাপনের চেষ্টা করেছি , তবে এটি কিছুই করার মতো বলে মনে হচ্ছে না।\&replace()

কেউ সাহায্য করতে পারেন?

জাভাস্ক্রিপ্ট কোড এবং স্ট্রিংয়ের মতো দেখাচ্ছে:

var wysiwyg = dijit.byId("wysiwyg").get("value");
var wysiwyg_clean = wysiwyg.replace('&','\&');

var poststr = "act=save";

poststr+="&titlu="+frm.value.titlu;
poststr+="&sectiune="+frm.value.sectiune;
poststr+="&wysiwyg="+wysiwyg_clean;
poststr+="&id_text="+frm.value.id_text;

xmlhttp.open("POST","lista_ajax.php",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send(poststr);

স্ট্রিংটি হ'ল:

 <span class="style2">&quot;Busola&quot;</span>

উত্তর:


170

আপনি এনকোডিউআরআইসি কম্পোনেন্ট () ব্যবহার করতে পারেন ।

এটি ইউআরএলগুলিতে ভারব্যাটিম না ঘটতে পারে এমন সমস্ত অক্ষর থেকে রক্ষা পাবে:

var wysiwyg_clean = encodeURIComponent(wysiwyg);

এই উদাহরণে, অ্যাম্পারস্যান্ড চরিত্রটি &পালানোর ক্রম দ্বারা প্রতিস্থাপন করা হবে %26, যা ইউআরএলগুলিতে বৈধ।


ডেটা সুরক্ষিতভাবে এড়াতে এটি কি যথেষ্ট বা এম্পারস্যান্ড সমস্যাটি এড়াতে "" যথেষ্ট "?
— ওয়াটেনস্প্রেলস

@ প্রোটেনওয়ালস, সমস্ত ডেটা সঠিকভাবে এনকোড করার জন্য এটি যথেষ্ট। এই প্রসঙ্গে "নিরাপদে" বলতে আপনার অর্থ কী?
— ফ্রেডেরিক হামিদী


9

আপনাকে অ্যাম্পারস্যান্ড থেকে ইউআরএল-পালাতে হবে। ব্যবহার:

var wysiwyg_clean = wysiwyg.replace('&', '%26');

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


4

রামিল আমরের উত্তর কেবল & চরিত্রের জন্যই কাজ করে। আপনার যদি অন্য কয়েকটি বিশেষ অক্ষর থাকে তবে আপনার পিএইচপি htmlspecialchars() এবং জেএস ব্যবহার করা উচিত encodeURIComponent()।

তুমি লিখতে পারো:

var wysiwyg_clean = encodeURIComponent(wysiwyg);

এবং সার্ভার দিকে:

htmlspecialchars($_POST['wysiwyg']);

এটি নিশ্চিত করবে যে এজেএক্স প্রত্যাশিত হিসাবে ডেটা পাস করবে এবং পিএইচপি (আপনার ডাটাবেসে ডাটা প্ররোচিত করার ক্ষেত্রে) নিশ্চিত করবে যে ডেটা প্রত্যাশার মতো কাজ করে।


2

আপনি এই এনকোডিউআরআইআরকিউম্পোন্ট ফাংশনটি ব্যবহার করে আপনার যুক্তিগুলি পাস করতে পারেন যাতে কোনও বিশেষ অক্ষর পাস করার বিষয়ে আপনাকে চিন্তা করতে হবে না।

data: "param1=getAccNos&param2="+encodeURIComponent('Dolce & Gabbana') 

বা

var someValue = 'Dolce & Gabbana';
data: "param1=getAccNos&param2="+encodeURIComponent(someValue)

https://developer.mozilla.org/en-US/docs/Web/JavaScript/ উল্লেখ / গ্লোবাল_অবজেক্টস /encodeURIC উপাদান


1

আপনি জাভাস্ক্রিপ্টের পাশে বেস 64 এনকোডিং ব্যবহার করে এবং তারপরে পিএইচপি (?) দিয়ে সার্ভারের পাশে ডিকোডিং ব্যবহার করে আপনার স্ট্রিংটি এনকোড করতে পারেন।

জাভাস্ক্রিপ্ট ( ডকু )

var wysiwyg_clean = window.btoa( wysiwyg );

পিএইচপি ( ডকু ):

var wysiwyg = base64_decode( $_POST['wysiwyg'] );

1

পছন্দের উপায়টি হল জাভাস্ক্রিপ্ট লাইব্রেরি যেমন jQuery ব্যবহার করা এবং কোনও তথ্য হিসাবে আপনার ডেটা বিকল্প সেট করা, তারপরে jQuery কে এনকোডিং করা যাক:

$.ajax({
  type: "POST",
  url: "/link.json",
  data: { value: poststr },
  error: function(){ alert('some error occured'); }
});

আপনি যদি jQuery ব্যবহার করতে না পারেন (যা এই দিনগুলির তুলনায় বেশ মানক) তবে এনকোডেরিউআইআরকিউম্পোন্ট ব্যবহার করুন ।


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