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


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.