这正是我想传递给服务器的数据:
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2"
xmlns:gx="http://www.google.com/kml/ext/2.2"
xmlns:kml="http://www.opengis.net/kml/2.2"
xmlns:atom="http://www.w3.org/2005/Atom">
<Document>
<Placemark>
<name>model1</name>
<Model id="model_1">
<Location>
<longitude>-5.986926473546048</longitude>
<latitude>37.37725475811571</latitude>
<altitude>0</altitude>
</Location>
<Orientation>
<heading>0</heading>
<tilt>0</tilt>
<roll>0</roll>
</Orientation>
<Scale>
<x>1</x>
<y>1</y>
<z>1</z>
</Scale>
<Link>
<href>http://www.ihs.org/objects/streetlight.dae</href>
</Link>
<ResourceMap>
<Alias>
<targetHref>http://www.ihs.org/objects/streetlight/texture0.jpg</targetHref>
<sourceHref>streetlight/texture0.jpg</sourceHref>
</Alias>
<Alias>
<targetHref>http://www.ihs.org/objects/streetlight/texture1.jpg</targetHref>
<sourceHref>streetlight/texture1.jpg</sourceHref>
</Alias>
</ResourceMap>
</Model>
</Placemark>
<Placemark>
<name>model2</name>
<Model id="model_2">
<Location>
<longitude>-5.986969267031843</longitude>
<latitude>37.37727640316665</latitude>
<altitude>0</altitude>
</Location>
<Orientation>
<heading>0</heading>
<tilt>0</tilt>
<roll>0</roll>
</Orientation>
<Scale>
<x>1</x>
<y>1</y>
<z>1</z>
</Scale>
<Link>
<href>http://www.ihs.org/objects/streetlight.dae</href>
</Link>
<ResourceMap>
<Alias>
<targetHref>http://www.ihs.org/objects/streetlight/texture0.jpg</targetHref>
<sourceHref>streetlight/texture0.jpg</sourceHref>
</Alias>
<Alias>
<targetHref>http://www.ihs.org/objects/streetlight/texture1.jpg</targetHref>
<sourceHref>streetlight/texture1.jpg</sourceHref>
</Alias>
</ResourceMap>
</Model>
</Placemark>
</Document>
</kml>
我通过ajax帖子发送这个,因此,
$.ajax({
type: "POST",
url:"/php/sendEdition.php?kml="+output,
async: true,
success: function(datos){
//datakml = eval(datos);
document.getElementById('dataOut').innerHTML = datos;
},
error: function (obj, error, objError){
alert("error");
}
});
这不起作用。没有数据发送到服务器。我想也许你不能只通过ajax传递HTML标签;是对的吗?我没有使用表格,但没关系,因为我已经掌握了所有信息。
答案 0 :(得分:1)
这是你的问题:
type: "POST",
url:"/php/sendEdition.php?kml="+output+",
首先,在逗号之前的结尾处的引号是语法错误。删除它。
其次,您将数据附加到URL,这将生成一个类似/php/sendEdition.php?kml=<?xml version="1.0"
的URL ....您可以立即在此处查看问题,在该问号和&符号(和其他值)中XML数据应该是URL转义的,但不是。
您可以使用encodeURIComponent()
解决此问题,因此:
type: "POST",
url: "/php/sendEdition.php?kml=" + encodeURIComponent(output),
现在您的XML将被正确转义。
但是,为什么要在URL中发送XML呢?这是一个POST请求,带有POST正文。大数据最好以这种方式发送。
type: "POST",
url: "/php/sendEdition.php",
data: {"kml": output},
答案 1 :(得分:0)
您正试图将指向文件的指针存储到数据库中,这是不可能的。相反,您应该将文件的内容存储到数据库中。
mysql_query("INSERT INTO places_edited (id_user, user_name, user_pic_square, id_place, place_name, place_pic, latitude, longitude, kml, place_type, description)
VALUES ('$id_user', '$user_name', '$user_pic_square', '$id_place', '$place_name', '$place_pic', '$latitude', '$longitude', '$kml', '$place_type', '$description')");
您也可以创建一个临时文件并存储文件名,但第一个选项更容易。
答案 2 :(得分:0)
您在ajax调用中使用type: "POST"
,然后尝试使用PHP代码中的GET
访问它。
将您的PHP $_GET
超全局更改为$_POST
,如下所示: -
$id_user=$_POST['id_user'];
$user_name=$_POST['user_name'];
$user_pic_square=$_POST['user_pic_square'];
$id_place=$_POST['id_place'];
$place_name=$_POST['place_name'];
$place_pic=$_POST['place_pic'];
$latitude=$_POST['latitude'];
$longitude=$_POST['longitude'];
$kml=$_POST['kml']; //THIS ONE IS THE BLOB FIELD
$place_type=$_POST['place_type'];
$description=$_POST['description'];
等
希望这有帮助。
另外,请查看PHP文档 - 不再使用mysql_
函数,改为使用mysqli_
或PDO。这不是你的问题,只是一个建议。
W3Schools为PHP和MySQL教程提供了一个很好的起点。
答案 3 :(得分:0)
解
$.ajax({
type : "POST",
url : "/php/uploadkml.php?",
data : { "kml": encodeURIComponent(output) },
//dataType : "xml",
success : function(datos){
document.getElementById('dataOut').innerHTML = datos;
alert("Success");
},
error : function(datos) {
if (datos){
datakml = eval(datos);
document.getElementById('dataOut').innerHTML = datakml;
}
alert("Failed");
}
});
在php上解码它。
还有很多其他选择,但我不明白为什么这个选项对我来说唯一...