作者 主題: 設計了兩個php網頁,想嘗試ajax操作  (閱讀 4226 次)

0 會員 與 1 訪客 正在閱讀本文。

Quota

  • 活潑的大學生
  • ***
  • 文章數: 352
    • 檢視個人資料
    • http://home.kimo.com.tw/jiannrongkimo/
我設計了兩個php網頁,想嘗試ajax操作,當網頁編碼為英文時OK..但是當我把資料及網頁改為utf-8,
卻無法傳送..想請教各位前輩,我是哪一個環節出錯?

資料表結構如下:
CREATE TABLE `airport`
(`id` int(255) NOT NULL auto_increment,
`city` varchar(20) collate utf8_unicode_ci NOT NULL,
`area` varchar(20) collate utf8_unicode_ci NOT NULL,
`store` varchar(100) collate utf8_unicode_ci NOT NULL,
`lat` varchar(100) collate utf8_unicode_ci NOT NULL,
`lng` varchar(100) collate utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8
COLLATE=utf8_unicode_ci AUTO_INCREMENT=4 ;
INSERT INTO `airport`VALUES (1, '桃園市', '', '中正機場', '25.081479', '121.237371');
INSERT INTO `airport`VALUES (2, '高雄市', '', '小港機場', '22.574072', '120.348358');
INSERT INTO `airport` VALUES (3, '日本', '羽田', '羽田機場', '35.552222', '139.779722');

第一個網頁如下:
<? ob_start(); ?><!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>
</head>
<body>
<form name='form1' method='GET' action=''>
States : <font id=states>
<select>
<?
echo "Cities : <font id=cities><select>\n";
if ($_GET['store']!="")
{
echo "<option value='$id'>".$_GET['store']."</option>";
}
echo "<option value='0'>=== none ===</option> \n" ;
echo "</select></font>\n";
?>
</form>
<?
echo "GET['city']=".$_GET['city']."<br>";
echo "GET['store']=".$_GET['store'];
?>
<script language=Javascript>
function Inint_AJAX() {
try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) {} //IE
try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) {} //IE
try { return new XMLHttpRequest(); } catch(e) {} //Native Javascript
alert("XMLHttpRequest not supported");
return null;
};
function dochange(src, val) {
var req = Inint_AJAX();
req.onreadystatechange = function () {
if (req.readyState==4) {
if (req.status==200) {
document.getElementById(src).innerHTML=req.responseText; //retuen value
}
}
};
req.open("GET", "state3.php?data="+src+"&val="+val); //make connection
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8"); // set Header
req.send(null); //send value
}

window.onLoad=dochange('states', -1); // value in first dropdown
</script>
</body>
</html>


state3.php如下:
<?
//set IE read from page only not read from cache
//header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header ("Cache-Control: no-cache, must-revalidate");
header ("Pragma: no-cache");

header("content-type: application/x-javascript; charset=utf-8");
//*/

$data=$_GET['data'];
$val=$_GET['val'];
$data='states';
//set database

$dbhost = "localhost";
$dbuser = "root";
//$dbpass = "1234";
$dbpass = "phpmysql";
$dbname = "practice";
mysql_connect($dbhost,$dbuser,$dbpass) or die ("Unable to connect to MySQL server");
mysql_query("SET NAMES UTF8");
//這裡echo的資料 可套用css
//echo "data="
if ($data=='states') { // first dropdown
echo "<select name='city' onChange=\"dochange('city', this.value)\">\n";
if ($_GET['city']!=""){
echo "<option value='$id'>".$name."</option>";}
echo "<option value='0'>==== choose state ====</option>\n";
$result=mysql_db_query($dbname,"select `id`, `city` from airport") or die(mysql_error());
while(list($id, $name)=mysql_fetch_array($result)){
echo "<option value=\"$id\" >$name</option> \n" ;
}
} else if ($data=='cities') { // second dropdown
echo "<select name='store' onChange=\"form1.submit();\">\n>\n";
if ($_GET['store']!=""){
echo "<option value='$id'>".$_GET['store']."</optionbbb>";}
echo "<option value='0'>====choose cities ====</option>\n";
$result=mysql_db_query($dbname,"SELECT `id`, `store` FROM airport WHERE `ID` = '$val' ") or die(mysql_error());
while(list($id, $name)=mysql_fetch_array($result)){
echo "<option value=\"$name\" >$name</option> \n" ;
}
}
echo "</select>\n"; echo $data."<br>";
echo $val."<br>";
?>

謝謝~

ricky

  • 區域板主
  • 鑽研的研究生
  • *****
  • 文章數: 669
    • 檢視個人資料
    • Ricky 碎碎唸
回覆: 設計了兩個php網頁,想嘗試ajax操作
« 回覆 #1 於: 2010-09-20 17:08 »
給樓主一個良心的建議
1.Client Side可以改用jQuery (這會讓你活的更快樂)
2.Server Side請不要把html,php,外加SQL全混在一起。
不只你搞不懂,很多人也搞不懂你在寫什麼。
我們是人,不是PHP直譯器。
請多利用smarty或是php樣板語法,讓你的程式碼更容易懂一些。
3.請善用firefox的firebug plugin,查一下你的ajax到底送了什麼東西,收到些什麼東西。

這樣沒頭沒尾的東西,根本看不出來問題是出在javascript錯誤還是php解析錯誤。

我的symfony作品:YOMOpets 寵物誌
有興趣可以一起來討論symfony喔
我的部落格:http://ricky.ez2.us/

Quota

  • 活潑的大學生
  • ***
  • 文章數: 352
    • 檢視個人資料
    • http://home.kimo.com.tw/jiannrongkimo/
回覆: 設計了兩個php網頁,想嘗試ajax操作
« 回覆 #2 於: 2010-09-20 22:27 »
給樓主一個良心的建議
1.Client Side可以改用jQuery (這會讓你活的更快樂)
2.Server Side請不要把html,php,外加SQL全混在一起。
不只你搞不懂,很多人也搞不懂你在寫什麼。
我們是人,不是PHP直譯器。
請多利用smarty或是php樣板語法,讓你的程式碼更容易懂一些。
3.請善用firefox的firebug plugin,查一下你的ajax到底送了什麼東西,收到些什麼東西。

這樣沒頭沒尾的東西,根本看不出來問題是出在javascript錯誤還是php解析錯誤。



謝謝..我會依照您的建議進行修改

Darkhero

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 3728
  • 性別: 男
    • 檢視個人資料
    • ㄚ凱隨手紀
回覆: 設計了兩個php網頁,想嘗試ajax操作
« 回覆 #3 於: 2010-09-21 11:12 »
貼上論壇的程式碼請適當地使用BBcode...
讓閱讀文章的人比較容易閱讀你的程式碼...
希望我們的討論是為了把問題解決,而不是爭論誰對誰錯.
『灌水才是重點,發文只是順便』
『我寧可讓不會釣魚的工程師餓死,也不想讓會餓死的工程師去攪沉公司....』
Blog: http://blog.darkhero.net/
秘密基地: http://www.darkhero.net/comic/
目前服務的網站: http://www.libook.com.tw/

hikohan

  • 俺是博士!
  • *****
  • 文章數: 1288
    • 檢視個人資料
回覆: 設計了兩個php網頁,想嘗試ajax操作
« 回覆 #4 於: 2010-09-21 11:26 »
黑老大,這種MVC三機一體成型的,貼BBCode可能....

還是沒用。  

   ;D       ;D
 ;D   ;D    ;D  ;D

  ;D ;D ;D ;D ;D ;D
  ;D         ;D
  ;D         ;D
    ;D ;D ;D ;D 

« 上次編輯: 2010-09-21 11:28 由 hikohan »
lifeIsFunWithPHP.

see7di

  • 懷疑的國中生
  • **
  • 文章數: 51
  • 性別: 男
    • 檢視個人資料
    • http://7di.net
回覆: 設計了兩個php網頁,想嘗試ajax操作
« 回覆 #5 於: 2010-10-26 13:16 »
如果修改成utf-8那么你需要文件把文件頭的編碼設置為utf-8,然后保存文件的時候保存編碼修改成utf8,另外js文件也要使用utf8編碼進行保存等等,不只是僅僅把meta標簽的值改掉就ok了得.