0

我有一个工作代码,它允许用户将 url 插入数据库,并显示数据库的内容。

当我使用 ajax 添加到数据库时遇到的问题是,如果 url 有字符“&”它会在该字符之前剪切 url,例如:

1. http://www.arisroyo.com/wp-content/uploads/2012/07/php.png
2. http://www.arisroyo.com/wp-content/uploads/2012/07/test&123.png

将 url 1 添加到数据库时我没有问题,但是当将 url 2 添加到数据库时,我将其添加到数据库中:

http://www.arisroyo.com/wp-content/uploads/2012/07/test

它忽略“&”符号之后的任何内容。问题是我所有的网址都将使用“&”符号。

这是我在 AJAX 上使用的代码,用于从网站上获取用户的 url:

var nocache = 0;
function insert() {
// Optional: Show a waiting message in the layer with ID login_response
document.getElementById('insert_response').innerHTML = "Just a second..."
// Required: verify that all fileds is not empty. Use encodeURI() to solve some issues about character encoding.
var site_url= encodeURI(document.getElementById('site_url').value);

// Set te random number to add to URL request
nocache = Math.random();
// Pass the login variables like URL variable
http.open('get', 'insert.php?site_url='+site_url+'&nocache = '+nocache);
http.onreadystatechange = insertReply;
http.send(null);
}
function insertReply() {
if(http.readyState == 4){
var response = http.responseText;
// else if login is ok show a message: "Site added+ site URL".
document.getElementById('insert_response').innerHTML = 'Site added:'+response;
}
}

我一直在使用没有 ajax 的 addinto mySQL,并且从来没有遇到过 url 和“&”符号的问题。我想知道是什么导致了这个问题。

4

2 回答 2

1
document.getElementById('insert_response').innerHTML = "Just a second..."

那里缺少线路终端?

也可以尝试像这样实例化 site_url: url site_url = @"thesite.com";

于 2012-07-16T03:46:31.647 回答
0

我通过简单地将单词组件添加到 econdeURI 来解决它,如下所示:

var site_url= encodeURIComponent(document.getElementById('site_url').value);

我只有在我完全被踩到的时候才在这里发帖,所以很抱歉浪费了你的时间!但感谢您花时间查看我的问题

于 2012-07-16T03:55:38.703 回答