AJAX数据未发送到PHP文件

时间:2012-12-17 04:58:57

标签: php ajax ajax-request

我的AJAX有问题。我的javascript文件无法将数据发送到PHP文件。我的javascript文件:

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 :

3 个答案:

答案 0 :(得分:1)

您应该将图片路径编码为网址,并将颜色编码为#(使用encodeURIComponent

您的查询字符串似乎全部搞砸了,您传递了colorurlimg_path,但期望colorimg_pathtitle < / p>

另外

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

答案 1 :(得分:1)

我非常确定你的颜色变量中的哈希符号会将其抛弃。

忘记AJAX,直接使用上面的get变量转到你的update.php并执行print_r($ _ GET),你会发现没有任何东西被传递到$ _GET变量。

摆脱哈希并且你是金色的

也就是说,发送没有哈希(#)

的十六进制颜色代码

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

答案 2 :(得分:0)

尝试使用post方法,因为你可能知道url对传递字符有一些限制,而post可以发送你想要的数据。

还有一件事情是尝试使用$_REQUEST代替$_GET,看看是否有效。