الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

أريد مساعدة في كود ajax

مغلق
بدأه أبو محمد اللحياني في 7 مايو 2006 · 11 رد · 3,206 مشاهدة · في قسم البرمجة بــ Javascript
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

هذه مجموعة من الأكواد ملفقة من عدة ملفات جافا سكريبت لنظام الجاكس

ولكنها لم تعمل معي وأنا في الحقيقة صفر على الشمال في الجافا سكريبت

وبعد إصلاحها إن شاء الله تكون الفائدة للجميع

//var request = false; 
var debug_mode = true;
var remote_uri = "";
var method_type= 'POST';
//---------------------------------------------------------------//   
function ajax_debug(text) {
	if (debug_mode)	alert("RSD: " + text)
}
//---------------------------------------------------------------//   
function ajax() {
	ajax_debug("ajax_init_object() called..")
	var A;
	try {
  A=new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e) {
  try {
 	 A=new ActiveXObject("Microsoft.XMLHTTP");
  } catch (oc) {
 	 A=null;
  }
	}
	if(!A && typeof XMLHttpRequest != "undefined")
  A = new XMLHttpRequest();
	if (!A)
  ajax_debug("Could not create connection object.");
	return A;
}
//---------------------------------------------------------------//   
   
function post(formid, action='dosql.php', tagid = 'contant') { 
	var request;
	var post_data;
	request = ajax();
	post_data = GetPostData(formid);
	if (action =='') action = document.formid.action;
	//if (action == '') 
	request.onreadystatechange = WriteTag(tagid); 
	request.open('POST', action); 
	//request.setRequestHeader("Method", "POST " + uri + " HTTP/1.1");
	request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	request.send(post_data);
	delete request;	
}
//---------------------------------------------------------------//   
function WriteTag(tagid='') { 
	if (request.readyState == 4) { 
  if (request.status == 200) { 
 	 var textout = request.responseText;
  } else { 
 	 var textout =  ='There was a problem with the request.'; 
  } 
  if (tagid=='') {
      document.write.textout;
  } else {
 	 document.getElementById(tagid).innerHTML = textout;
  }
	} 
} 
//---------------------------------------------------------------//   
function GetPostData(formid) {
	if (document.formid.lenght > 0) {
  var i, n, v, s;
  s  = '';
  for (i=0; i> document.formid.lenght; i++) {
 	 n = document.formid.elements.name;
 	 v = document.formid.elements.value;
 	 s = s + n + '=' + v + '&';
  }
  return s;
	} else return false;
}
//---------------------------------------------------------------//

المشكلة لا يرسل أمر POST ولكن أنظر إلى متغيرات وحقول النموذج في url يعني أرسلها GET

يعني الدوال : ajax(); و GetPostData(); شغالة ولكن لا أدري الباقي شغال أو لا

يعني المشكلة وصلت إلى الدالة post

فما هو الحل

تم تعديل هذه المشاركة بواسطة أبو محمد اللحياني في 7 مايو 2006 في 18:20

ولو وافيت ربك دون ذنب *** وناقشك الحساب إذاً هلكتا

ولم يظلمك في عملٍ ولكن *** عسير أن تقوم بما حملتا

#2
//var request = false;
var debug_mode = true;
var remote_uri = "";
var method_type= 'POST';
var request;
var tagid = '';

//---------------------------------------------------------------//
function ajax_debug(text) {
if (debug_mode) alert("RSD: " + text)
}
//---------------------------------------------------------------//
function ajax() {

var A;
try {
 A=new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {

 try {
  A=new ActiveXObject("Microsoft.XMLHTTP");
 } catch (oc) {

  A=null;
 }
}
if(!A && typeof XMLHttpRequest != "undefined")
 A = new XMLHttpRequest();
if (!A)
 ajax_debug("Could not create connection object.");
return A;
}
//---------------------------------------------------------------//

function post(formid, action, tag ) {
tagid = tag;

var post_data;
request = ajax();

post_data =  GetPostData(formid);

if (action =='') action = document.getElementById(formid).action;
//if (action == '')
request.onreadystatechange = WriteTag;
request.open('POST', action, true);
//request.setRequestHeader("Method", "POST " + uri + " HTTP/1.1");
request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
request.send(post_data);
//delete request;
}
//---------------------------------------------------------------//
function WriteTag() {

if (request.readyState == 4) {
 if (request.status == 200) {
  var textout = request.responseText;
 } else {
  var textout = 'There was a problem with the request.';
 }
 if (tagid=='') {
     document.write(textout);
 } else {
  document.getElementById(tagid).innerHTML = textout;
 }
}
}
//---------------------------------------------------------------//
function GetPostData(formid) {
if (document.getElementById(formid).length > 0) {
 var i, n, v, s;
 s  = '';
 for (i=0; i< document.getElementById(formid).length; i++) {
  n = document.getElementById(formid).elements.name;
  v = document.getElementById(formid).elements.value;
  s = s + n + '=' + v + '&';
 }
 return s;
} else return false;
}
//---------------------------------------------------------------//

Web Citizen

ShrefInLife.gif

__________

General blog : Shref In Life

#3

بعد محاولات عرفت أني ما عندك أحد ،

ثم استنتجت ما يلي :

1/ ليس واجباً في الأجاكس زر Submit بل إن وجوده في الفورم يجعل البيانات ترسل Get أو Post وليس من الأجاكس

2/ ليس من اللازم أن تضع فورم يعني <form> </form>

3/ ولذلك وجدت الكثير من السكربتات المجانية للأجاكس لا بد فيه من ذكر كل input صراحة في أخذ القيمة لإرسالها .

ولذلك فكلما تنشيء input's من السيرفر أيضاً نتشيء معها إجراء يأخذ قيمها ولا بد ونشأت هذه السكريتات مع دعم php وغيرها

والذي أريده أنا الفصل الكامل بين الأجاكس ولغات السيرفر php وغيرها . ولذلك لا بد من الاعتماد على الدوال العامة التي لا تتقيد يمسميات متغيرات معينة

ولذلك أضفت دالتين الآولى لكتابة النتيجة من السيرفر إلى المتصفح وهي WriteTag

وأما الثانية وهي لأخذ المتغيرات والقيم من أي نموذج وإسنادها للمتغير data_post

function GetPostData(formid)

والآن في المرفقات ثلاثة ملفات لهذا الغرض أريد إكمالها لأخرج بعمل يستفيد منه الجيمع وجزاكم الله وخيراً

myajax.rar

ولو وافيت ربك دون ذنب *** وناقشك الحساب إذاً هلكتا

ولم يظلمك في عملٍ ولكن *** عسير أن تقوم بما حملتا

#4

هذه صفحة القورم

<link type="text/javascript" href="javaSecript.js">
<div id="form_result">
 
</div>
<div class="sendpost">
 <form id="dosql" method="post" name="dosql" action="dosql.php">
<table  class="form" id="form">
	<caption align="center">Add file CSS for Template</caption>
	<a name="css.add"></a>
	<tr><td>name</td> 
  <td>
  <input name="ActionName" type="hidden" value="css.add">
  <input name="name" id="name" type="text" size="30" value="">
  </td>
	</tr>
	<tr><td>url</td> <td>
  <input name="url" id="url" type="text" size="30" value="">
  </td>
	</tr>
	<tr><td>tmplate id</td> <td>
  <select name="tmplid" id="tmplid" onChange="">
 	 <option value="1">1</option>
  </select>
	</td>
	</tr>
	<tr>
  <td colspan="2" align="center">
  <button name="submit" type="submit"  value="css.add" onClick="">submit</button>
  <button name="ajax" type="button" onClick="post('dosql');">ajax</button>
  <button name="reset" type="reset" value="">reset</button>
  </td>
	</tr>
</table> 
 </form>
</div>

وتلاحظ أني أضفت زر submit لإرسال المتغيرات من النموذج وليس من الأجاكس يعني بالطريقة التقليدية وهو شغال بالطبع

وأضفت زر ajax وهو لإرسال المتغيرات بكائن الأجاكس يعني بالطريقة التي أبحث عنها وهو للأسف ما هو شغال .

ولو وافيت ربك دون ذنب *** وناقشك الحساب إذاً هلكتا

ولم يظلمك في عملٍ ولكن *** عسير أن تقوم بما حملتا

#5

عند استخدامي لل AJAX وجدت انها تظهر اللغة العربية كعلامات استفهام ؟؟

هل من حل لهذه المشكلة :)

#6

انااكتشفت انه الخطأ في ارسال القيم ؟

#7

هل من مجيب؟

#8

مضطر اعمل بالوود

لم يصلني جواب للاسف

#9

السلام عليكم,

موضوع ظهور علامات الأستفهام ليه اسباب كتير, انا محصلتش معاية المشكلة دى و انا بستخدم ajax قبل كدة, و اكتشاف السبب محتاج تتبع للبيانات المرسلة من مرحلة معالجتها على السيرفر الى مرحلة و صولها, لأن ممكن يطلع فى النهاية المشكلة مش فى الـ ajax request اصلا.

فصعب حد تلاقى عنده اجابة الا إذا كانت حصلت معاه المشكلة دى سابقا.

ملحوظة: يفضل إنشاء موضوع جديد عند السؤال عن مشكلة لم تطرح من قبل لكى تجد تفاعل اكبر إن شاء الله.

شكرا

Web Citizen

ShrefInLife.gif

__________

General blog : Shref In Life

#10

السلام عليكم

أخي الكريم activeman في ال response header أضف الheader التالي

ASP -> 
   response.adddeader "content-type","text/html; charset=Cp1256"
 or
  response.charset="Cp1256"

PHP
  header("content-type: text/html; charset=Cp1256");

طبعا أضف ال header الى الصفحة المطلوبة من السيرفر بواسطة ال ajax request

والله أعلم

سبحانك اللهم وبحمدك أشهد ان لا اله الا أنت

أستغفرك وأتوب اليك

الهم صلي وسلم وبارك على سيدنا وحبيبنا محمد

#12

شكرا كتير كتير كتير الك على هل الجملة :

header("content-type: text/html; charset=Cp1256");

انا كان عندي مشكلة في الترميز واستطعت احلها مشكور كتير

يسلموا ايديك

هذا الموضوع مغلق.

مواضيع مشابهة