2012-12-17 38 views
1

我的AJAX存在問題。我的JavaScript文件無法將數據發送到PHP文件。我的JavaScript文件:未將AJAX數據發送到PHP文件

function updateTile(tile_no){ 

    var ajaxRequest; 

    var color = document.getElementById("color_"+tile_no).value; 
    //alert($color); 
    var img_path = document.getElementById("url_"+tile_no).value; 
    //alert(url); 
    var title = document.getElementById("title_"+tile_no).value; 

    try{ 

    ajaxRequest = new XMLHttpRequest(); 
    } catch (e){ 

     try{ 
      ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP"); 
     } catch (e) { 
      try{ 
       ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP"); 
      } catch (e){ 

       alert("Browser Error !"); 
       return false; 
      } 
     } 
    } 

    ajaxRequest.onreadystatechange = function(){ 
     if(ajaxRequest.readyState == 4){ 


      document.getElementById("box_tile"+tile_no).innerHTML = ajaxRequest.responseText; 
     } 
     else 
     { 
      document.getElementById("box_tile"+tile_no).innerHTML = '<img src=ajax-loader.gif /> <br /> '; 
     } 
    } 

    var url = "update.php?color="+color+"&url="+img_path+"&img_path="+title; 

    alert(url); 

    ajaxRequest.open("GET", url, true); 
    ajaxRequest.send(null); 
} 

alert(url);顯示update.php?color=#444444&url=http://somesite/image.jpg&img_path=Tile 1。我的update.php文件:

<?php 


    $color_code = $_GET['color']; 

    $img_url = $_GET['img_path']; 

    $title = $_GET['title']; 

    echo 'Color Code :'.$color_code; 
    echo '<br />Image Path :'.$img_url; 
    echo '<br />Title :'.$title; 

/* 
echo '<div style="background:'.$color_code.';width:100%;height:100%;vertical-align:bottom;color:#f8f8f8;font-family:Trebuchet MS;"><img src="'.$img_url.'" /><span>'.$title.'</span></div>'; 
*/ 
?> 

但是來自PHP的響應顯示空的結果!

Color Code : 
Image Path : 
Title : 
+0

使用url編碼發送'GET'數據。否則使用'POST'方法。 –

回答

1

,因爲它包含一個#(使用encodeURIComponent

您的查詢字符串似乎全亂了,你傳遞你應該,因爲它是一個URL和彩色編碼圖像路徑colorurlimg_path但預計colorimg_pathtitle

而且

var url = "update.php?color="+encodeURIComponent(color)+ 
      "&img_path="+encodeURIComponent(img_path)+"&title="+title; 
+0

謝謝穆薩。它現在的工作 – Nitish

1

我很確定你的顏色變量中的哈希符號正在拋棄它。

忘記AJAX,直接用上面的get變量轉到你的update.php並執行print_r($ _ GET),你會發現沒有任何東西被傳入$ _GET變量。

擺脫散的,你是金色的

也就是說,發送十六進制顏色代碼,而無需哈希(#)

update.php?顏色= 444444而不是update.php ?color =#444444

+0

是的..你是對的HighParkCoder ..爲什麼這個散列符號不允許發送數據?謝謝 。 – Nitish

+0

散列之後的任何內容都將被忽略。你的情況也沒有必要。 – BBagi

+0

也忽略下面的註釋以$ _REET與$ _GET進行交換。這是不好的建議。 $ _REQUEST還會返回cookie變量,如果你有一個與$ _GET變量共享相同名稱空間的cookie變量,它會覆蓋它。我以艱辛的方式學會了這一教訓!非常令人沮喪 – BBagi

0

嘗試post方法,因爲你可能知道url對傳遞字符有一些限制,而post可以發送儘可能多的數據。

而且還有一件事嘗試使用$_REQUEST而不是$_GET看哪一個都行不通。