PDA

View Full Version : مبتدی: اجرا نشدن کد در firefox و chrom



mahdi_apple
دوشنبه 17 تیر 1392, 12:55 عصر
با سلام
من کد زیر رو از روی آموزش استاد کیانیان نوشتم و بخوبی بر روی IE اجرا میشه اما در فایرفاکس و کروم هیچ عکس العملی نشون نمیده.
خودم فکر کنم مشکل از متد deleteRow باشه.
لطفا اگه امکان داره کمکم کنید.




<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script src="ajax.js" language="javascript" defer="defer">
</script>
<script language="javascript">
function del(id)
{

var table = document.getElementById("tbl");
var tr = document.getElementById("tr"+id);
table.deleteRow(tr.rowIndex);

}
</script>
</head>
<body>
<table width="300" border="1" cellspacing="0" cellpadding="5" id="tbl">
<tr>
<td bgcolor="#CCCCCC">ID</td>
<td bgcolor="#CCCCCC">Title</td>
<td bgcolor="#CCCCCC">Agency</td>
<td bgcolor="#CCCCCC">Operation</td>
</tr>
<?php
$ServerName="localhost";
$port="3306";
$DBname="newsmanagedb";
$User="root";
$pass="";

$link = mysql_connect($ServerName.":".$port,$User,$pass);
mysql_select_db($DBname,$link);
$sql = "select * from news";
$result = mysql_query($sql,$link);
$row="";
while($row=mysql_fetch_assoc($result))
{?>
<?php $id = $row["nid"]; ?>
<tr id="tr<?php print($id); ?>">
<td><?php print($row["nid"]); ?></td>
<td><?php print($row["ntitle"]); ?></td>
<td><?php print($row["nagency"]); ?></td>

<td><input type="button" value="Delete" id="Delete" onclick="sendToServerForDelete(<?php print($id); ?>);"/></td>
</tr>
<?php
}
mysql_close($link);
?>

</table>
</body>
</html>

ehsan_savadkohi
دوشنبه 17 تیر 1392, 13:06 عصر
یعنی چی؟؟

1) حذف نمیکنه>؟؟
2) حذف میکنه چیزی نشون نمیده...؟؟؟

یه کم بیشتر توضیح بدید..
در ضمن اون ajax ضمیمه را هم محتویاتش را نشون بدید!!!

mahdi_apple
دوشنبه 17 تیر 1392, 13:12 عصر
یعنی اینکه توی اینترنت اکسپلورر سطر ها رو بدون مشکل حذف میکنه و توی فایرفاکس و کروم وقتی روی دکمه delete کلیک میکنم هیچ اتفاقی نمیوفته.(نه حذف میشه نه ارور میده).
اینم کد Ajax


var pageurl="delete.php?param=";
var http=getHttp();
var newsid =0;

function Answer()
{
if(http.readystate==4)
{
r=http.responseText;
if(r=="1")
del(newsid);

else
alert("Error in connect to server");
}
}

function sendToServerForDelete(id)
{
newsid=id;
var code = id;
http.open("GET",pageurl+code,true);
http.onreadystatechange=Answer;
http.send(null);
}

function getHttp()
{
var xmlhttp;
try
{
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
try
{
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e)
{
if(typeof XMLHttpRequest !='undefined')
{
xmlhttp = new XMLHttpRequest();
}
}
}

return xmlhttp;
}

ehsan_savadkohi
دوشنبه 17 تیر 1392, 14:09 عصر
این متد حذف داخل فایل ajax را به این تغییر بده.
function sendToServerForDelete(id)
{
newsid=id;
var code = id;

var deluser= confirm("از حذف مطمئن هستید؟");
if(deluser==true)
{
if (window.XMLHttpRequest)
xmlhttp = new XMLHttpRequest();
else
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");

xmlhttp.open("post",pageurl+code,true);
xmlhttp.onreadystatechange=Answer;
xmlhttp.send();
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
alert('با موفقیت حذف شد !');

}
}

}
}

و در قسمت html به این روش تغییر دهید...


<?php
$ServerName="localhost";
$port="3306";
$DBname="newsmanagedb";
$User="root";
$pass="";

$link = mysql_connect($ServerName.":".$port,$User,$pass);
mysql_select_db($DBname,$link);
$sql = "select * from news";
$result = mysql_query($sql,$link);
$row="";
while($row=mysql_fetch_assoc($result))
{?>
<?php $id = $row["nid"]; ?>
<form action="" method="post" >
<tr id="tr<?php print($id); ?>">
<td><?php print($row["nid"]); ?></td>
<td><?php print($row["ntitle"]); ?></td>
<td><?php print($row["nagency"]); ?></td>

<td><input type="button" value="Delete" id="Delete" onclick="sendToServerForDelete(<? echo $id ; ?>);"/></td>
</tr>
</form>
<?php
}
mysql_close($link);
?>

در ضمن ، بصورت ضمنی نوشتم. حالا احتمال 90% کار کنه. اگه کار نکرد دوباره تایپیک بزار تا به روش دیگه واست توضیح بدم/...

mahdi_apple
دوشنبه 17 تیر 1392, 16:33 عصر
من کدهایی رو که دادی امتحان کردم اما اتفاقی که افتاد اینه که موقع کلیک رو دکمه حذف پیغام میده برای اطمینان از حذف و بعد پیغام میده که حذف شد.اما بعد از این پیغام ها توی همه مرورگرها جدول دست نخورده باقی می مونه(هیچ سطری حذف نمشیه).

cpuram
دوشنبه 17 تیر 1392, 17:27 عصر
به نظر من از قدرت jquery استفاده کن.راحت کارا باهاش انجام میشه.

ehsan_savadkohi
سه شنبه 18 تیر 1392, 08:42 صبح
من کدهایی رو که دادی امتحان کردم اما اتفاقی که افتاد اینه که موقع کلیک رو دکمه حذف پیغام میده برای اطمینان از حذف و بعد پیغام میده که حذف شد.اما بعد از این پیغام ها توی همه مرورگرها جدول دست نخورده باقی می مونه(هیچ سطری حذف نمشیه).


تو ایجکس تو اون حلقه چک میشه که اگه تمام اتفاقات کاملا انجام شده پیغام ok را بده.
xmlhttp.request ها را برای چک کردن مرورگر ها را از نو بر اساس استاندارد ajax بنویس حتما مشکلت حل میشه.اون دستورات حذف php را هم چک کن که درسته!!!!
موفق باشید

mahdi_apple
سه شنبه 18 تیر 1392, 17:29 عصر
خوب بالاخره درست شد .با تشکر از ehsan_savadkohi (http://barnamenevis.org/member.php?238295-ehsan_savadkohi) عزیز.یکم کدی که داده بودید را تغییر دادم.کد صحیح رو میذارم اینجا تا بعدا هم اگه کسی خواست استفاده کنه.در ضمن کد html بدون مشکل بود و فقط ajax رو تغییر دادم.


var pageurl="delete.php?param=";
var newsid =0;

function sendToServerForDelete(id)
{
newsid=id;
var code = id;
var deluser= confirm("از حذف مطمئن هستید؟");
if(deluser==true)
{
if (window.XMLHttpRequest)
xmlhttp = new XMLHttpRequest();
else
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("post",pageurl+code,true);
xmlhttp.send();
xmlhttp.onreadystatechange=function(){

if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
r=xmlhttp.responseText;
if(r!="1")
alert("Error in connect to server");
else
{
del(newsid);
alert("با موفقیت حذف شد !");
}
}
}
}