A-AA+then

อาจารย์ช่วยดู error ให้หน่อยค่ะ

1,284

http://www.trainingccs.com/search.php
ช่วยเข้าไปในเว็บนี้นะค่ะ กดปุ่ม ค้นหา แล้วคลิกตรงรูป "แก้ไข" จะเกิด error ในส่วนนี้

ในส่วนนี้หนูเขียนโค้ดในไฟล์ php ดังนี้ค่ะ
$xx="a";
<a href='#' onclick='ajaxCallLink(".$xx.");'><img src='pic/book.gif' width='16' height='16' border='0' /></a>

โค้ดนี้จะส่งไปแสดงผลที่หน้า search.php

หนูลองเปลี่ยนตัวแปร $xx เป็นลักษณะต่างๆ เช่น $xx='a'; $xx="a";

แต่ถ้าเปลี่ยนตัวแปร $xx เป็นตัวเลขทั้งหมด ก็จะไม่ error นะค่ะ เช่น $xx="1";
อาจารย์คิดว่าสาเหตุมันน่าจะมาจากอะไรค่ะ

 

11 ความคิดเห็น

onclick='ajaxCallLink(\'".$xx."\');'

ถ้าเป็นตัวเลขก็ไม่มีปัญหาครับ แต่ถ้าเป็นข้อความต้องมี '' ครอบครับ
1

ขอบคุณค่ะอาจารย์
แต่ยัง error อยู่ค่ะ หนูมีโค้ดเพิ่มเติมให้อาจารย์ดูนะค่ะ

$xx="aa";
$a="<a href='#' onclick='ajaxCallLink(".$xx.");'><img src='pic/book.gif' width='16' height='16' border='0' /></a>";


ส่วนนี้หนูส่งค่าไปยังหน้าจอที่แสดงผลตัวแปร $xx
$js = <<<JS
 var el = document.getElementById('display');
 el.innerHTML = "$a";
JS;
 header("content-type: text/javascript; charset=tis-620");
 $js=iconv('utf-8','tis-620',$js);
 echo $js;


ในส่วนของ ajaxCallLink(".$xx."); หาก $xx เป็นตัวหนังสือ ไม่ว่าจะประกาศ $xx='aa'; หรือ $xx="a";
ก็ทำให้ผล error ได้เหมือนกัน และถ้าเราเขียนโค้ดยังไงก็จะทำให้ error เหมือนเดิม
ajaxCallLink('".$xx."');
หรือ ajaxCallLink(\'".$xx."\');
หรือ ajaxCallLink(\"".$xx."\");

หนูลง firefox กับ firebug แล้วนะคะ
แต่firefox ใช้กับเว็บหนูไม่ดีเท่าไร login ช้ามาก จนต้อง refesh หน้าจอใหม่ ถึงจะเข้าใช้ระบบได้

หนูลองใช้ firefox ในหน้าที่ส่ง link ให้อาจารย์ดูแล้ว แต่ก็ไม่มี error ค่ะ

2

ในโค้ดที่ให้ดู ajaxCallLink('A_main'); อยู่ที่ไหน ?

หาไม่เจอ
3

ขอโทษค่ะ พอดีก๊อปโค้ดจากหน้าอื่นมา ลืมลบค่ะ
ตอนนี้เอาโค้ดส่วนนั้นออกไปแล้วค่ะ แต่ก็ยัง error อยู่นะค่ะ

4

โค้ดดูแปลกๆนะ ajaxCallLink มันส่ง parameter A_EditPro ไปด้วย

A_EditPro คือ อะไร ?

ถ้าไม่มี '' ครอบ ใน Javascript มันจะเป็นตัวแปร

ถ้ามี '' ครอบ เช่น 'A_EditPro' มันก็จะเป็น string

อีกอย่าง ajaxCallLink ของทุก link มันใช้ parameter ตัวเดียวกันคือ A_EditPro แล้วจะแยกออกได้ไง ว่ามีการกดปุ่มไหน

สรุปคือยังผิดอยู่อีกเยอะ ลองออกแบบใหม่ดูครับ
5

ขอบคุณค่ะ

- A_EditPro เป็นสตริงส่งไปกับฟังก์ชัน ajaxCallLink เพื่อที่จะเช็คค่าที่ส่งไปให้ไฟล์ที่ทำงานเบื้องหลังเพื่อจะส่งค่ามาแสดงผลตามที่ต้องการ
- ส่วนไฟล์รูปทุกรูปเรียก ajaxCallLink เวลาคลิกนั้นหนูต้องการทดสอบในเบี้องต้น เพื่อให้แน่ใจว่าคลิกรูปแล้วสามารถทำงานได้ไหม เลยเขียนโค้ดให้คลิกไปในที่เดียวกันก่อน แล้วค่อยเปลี่ยนแปลงที่หลังค่ะ
- แต่ถ้าเปลี่ยนค่าตัวแปร $xx เป็นตัวเลข สามารถทำงานwได้ ไม่เกิด error ค่ะ เช่น $xx=1 หรือ $xx='1' หรือ $xx="1"
6

555++++

งันก็ไม่ต้องทดลองแล้วถ้าใส่สิ่งที่ถูกต้องลงไปมันก็ทำได้เองแหละ

โดยปกติ จากลักษณะของโค้ด ก็คงต้องส่ง id ของจังหวัดเข้าไป ถ้าเป็น ตัวเลข ก็ไม่ต้องใส่ '' ถ้าเป็นข้อความ ก็ใส่ '' เข้าไป แค่นั้นก็จบแล้ว
7

หนูแค่สงสัยว่าถ้าเปลี่ยนตัวแปร $xx เป็นตัวอักษรมันทำไมถึง error ล่ะค่ะ เพราะหนูต้องการเอา string A_EditPro ไปเช็คให้แสดงฟอร์มที่จะแก้ไขข้อมูลจังหวัดออกมา แล้วซ่อนฟอร์มค้นหานี้  จริงๆแล้วหนูต้องการส่งค่าไป 2 ค่า คือค่า ID ของจังหวัด กับค่า string 

แต่มันเกิด error ที่ string หนูก็เลยลองส่งค่า $xx="11" แล้วนำค่า 11 ไปเช็คให้ฟอร์มที่แก้ไขข้อมูลจังหวัดขึ้นมา ปรากฏว่าไม่ error
หนูแค่สงสัยว่าทำไมมันไม่สามารถส่งค่าเป็น String ไปได้

ตอนนี้หนูก็เลยแก้ปัญหาโดยการกำหนด ตัวแปร $xx ให้เป็นตัวเลข $xx=1 หรือ $xx='1' หรือ $xx="1" ปรากฏว่าได้หมด
แต่หากเรากำหนดแค่ตัวอักษรแค่ 1 ตัวอยู่ในตัวแปร $xx ก็จะทำให้ error แล้ว  เช่น $xx='1a'

หนูสงสัยค่ะ???????
 

8

อาจารย์ลองดูที่ link ใหม่นะค่ะ หนูได้กำหนดตัวแปร $xx='101' แล้วค่ะ ผลก็คือจะซ่อนหน้าที่ต้องการได้

ก็หนูมันช่างสงสัยนี่ค่ะ ในเมื่อมันกำหนดเป็น $xx='101' ได้ แล้วมันทำไมกำหนดเป็น $xx='a1' หรือที่เป็นตัวอักษรไม่ได้
ถ้ามันเป็นภาษาไทยหนูคงไม่สงสัยค่ะ แต่นี่มันก็เป็นภาษาอังกฤษ หนูก็เป็นเลยสงสัยค่ะ.....
9

สมมุติฐานการทดสอบของเธอมันผิดไง เธอใช้การทดสอบที่ไม่ถูกต้อง ผลลัพท์มันก็เลยไม่ถูก จริงๆแล้วการทดสอบเองก็ต้องออกแบบให้ดีเพื่อป้องกันความสับสน ทางออกหนึ่งจริงๆแล้วก็คือ ออกแบบบนพื้นฐานความเป็นจริง จะดีที่สุด ไม่งั้นเราก็อาจจะเจอปัญหาใหม่ แทนที่จะได้แก้ไขปัญหาเดิม

ยกตัวอย่าง A_EditPro ตามที่เธอเขียน มันเป็นตัวแปร และตัวแปรนี้ไม่ได้กำหนดค่ามาก่อน Javascript มันก็เลย error ซึ่งเป็นการออกแบบการทดสอบที่ผิด ทั้งๆที่ในความเป็นจริงแล้ว ถ้าเธอส่งค่าตรงๆให้กับมัน มันก็ไม่ error แล้ว เช่น ajaxCallLink('กรุงเทพ', 1);
10

ขอบคุณค่ะอาจารย์

11
^