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

データベースにURL1を追加する場合は問題ありませんが、データベースにURL 2を追加する場合は、これをデータベースに追加します。

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

「&」記号の後はすべて無視されます。問題は、すべてのURLが「&」記号を使用することです。

これは、ウェブサイトからユーザーからURLを取得するためにAJAXで使用しているコードです。

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なしでアドインmySQLを使用してきましたが、URLと「&」記号に問題はありませんでした。この問題の原因を知りたいのですが。

4

2 に答える 2

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

そこに回線終端がありませんか?

次のようにsite_urlをインスタンス化することもできます。urlsite_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 に答える