我的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 :
答案 0 :(得分:1)
您应该将图片路径编码为网址,并将颜色编码为#
(使用encodeURIComponent)
您的查询字符串似乎全部搞砸了,您传递了color
,url
和img_path
,但期望color
,img_path
和title
< / 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
,看看是否有效。