PDA

View Full Version : سوال: حذف amp; از url post ارسالی توسط تکنولوژی ajax



abasfar
پنج شنبه 25 اسفند 1390, 01:42 صبح
با سلام
دوستان من وقتی اطلاعاتم را post میکنم ادرس به طور خودکار اینکد میشه یعنی & به & تبدیل میشه حالا وقتی که من $_POST پارامتر را میگیرم به صورت خودکار & را جدا کننده در نظر میگیره و نام پارامتر را با amp; در نظر میگیره حالا ایا روش مناسبی جز جایگزینی رشته وجود داره


<script type="text/javascript">
try {
Req = new XMLHttpRequest();
} catch ( error ) {
Req = new ActiveXObject( "Microsoft.XMLHTTP" );
}
Data = 'id=2';
Data += '&post=5';
Data += '&com=455';

Req.open( 'POST', 'http://vsharp.ir/a.php', true );
Req.setRequestHeader( "Content-Type", "application/x-www-form-urlencoded; charset=UTF-8" );
Req.send( Data );
</script>

حالا کد بالا پارامتر زیر را تولید میکنه


id=2&amp;post=5&amp;com=455

وبعد از ارسال


id=2
amp;post=5
amp;com=455

hightech
پنج شنبه 25 اسفند 1390, 11:58 صبح
اگه تو خط 11 نحوه ارسال رو بجاي POST بحالت GET بذاريد، مشكلتون حل ميشه و url رو به شكل GET دربياريد
يا اينكه براي همين شكل

Req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
Req.setRequestHeader("Content-length", Data.length);
Req.setRequestHeader("Connection", "close");

abasfar
پنج شنبه 25 اسفند 1390, 12:16 عصر
ممنون از جواب شما دوست عزیز
اما یک سوال من قبل از کد زیر

Req.open( 'POST', 'http://vsharp.ir/a.php', true );
Req.setRequestHeader( "Content-Type", "application/x-www-form-urlencoded; charset=UTF-8" );
Req.send( Data );

این کد را گذاشتم

alert(Data);

و دیدم قبل از ارسال یعنی در مرحله الحاق کارکتر & را به &amp; تبدیل میکنه
ایا باز هم این کد شما کارایی داره
ممنون

hightech
پنج شنبه 25 اسفند 1390, 12:27 عصر
اينكه js كاراكتر & رو به &amp; تبديل ميكنه ذاتيه، دست خودش نيست!!!
اما كد رو امتحان نكردم، چون خيلي وقته از اين كلاس استفاده نميكنم، چون براي مرورگرهاي مختلف، نياز به كدهاي زيادي داره
JSHttpRequest،JQueryو MooTools كلاسهاي خوبي هستن

MMSHFE
پنج شنبه 25 اسفند 1390, 12:48 عصر
خوب شما بجای ;(alert(data این کد رو بگذارین (همونجایی که alert گذاشتین، ببینید درست میشه یا نه؟
Data = Data.replace("&amp;", "&");
ببینید درست میشه یا نه؟

abasfar
پنج شنبه 25 اسفند 1390, 12:59 عصر
خوب شما بجای ;(alert(data این کد رو بگذارین (همونجایی که alert گذاشتین، ببینید درست میشه یا نه؟
Data = Data.replace("&amp;", "&");
ببینید درست میشه یا نه؟


استاد ارجمند من تو اولین پست هم نوشتم


ایا روش مناسبی جز جایگزینی رشته وجود داره

چون من پارامترها معلوم نیست چندتا باشه و با توجه به اینکه اگر اشتباه نکنم برای هر پارامتر باید من یکبار

Data = Data.replace("&amp;", "&");

بنویسم خیلی کد طولانی میشه

MMSHFE
پنج شنبه 25 اسفند 1390, 13:07 عصر
نه عزیز، این تابع رو قبل از ارسال قرار بدین. کل ;amp& ها رو تبدیل به & میکنه. نیاز نیست برای هر مورد، تکرارش کنید. موفق باشید.