2010-11-30 7 views
0

私は多大な努力をしましたが、データベースに2つの値を保存するために何が間違っているかを知ることができませんでした。 1つの値を保存する別の関数でうまくいきました。ここでは非常に奇妙な動作をします。ときどき 'parent'値を送信することがあります&は送信を停止することもありますが、msg値を送信しないこともあります。ここに機能があります。 1つの入力、すなわち親に対してはうまく動作するが、問題は2番目の入力の追加から始まる。json関数のエラーがデータベースにデータを保存しています

<script> 
function ADDLISITEM(form) 
{ 
var parent = form.txtInput.value; 
    var msg = form.msgInput.value; 
    form.txtInput.value = ""; 
    form.msgInput.value = ""; 
    var url = "send_mysql.php" 
var request = null; 
if (window.XMLHttpRequest) 
{// code for IE7+, Firefox, Chrome, Opera, Safari 
request=new XMLHttpRequest(); 
} 
else 
{// code for IE6, IE5 
request=new ActiveXObject("Microsoft.XMLHTTP"); 
} 
request.open("POST", url, true); 
request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
request.setRequestHeader("Connection", "close"); 
request.onreadystatechange = function(){ 
    if (request.readyState == 4) { 
     if (request.status == 200) { 
      //alert('POST'); 
    } else { 
     alert(request.status); // fails here 
    } 
    } 
} 
request.send("parent=" + encodeURIComponent(parent).replace(/%20/g, '+')+"&msg=" + 
    encodeURIComponent(msg).replace(/%20/g, '+')); 
} 
</script> 

これはsend.php

$ユーザ名= "ババール" です。
$ password = "k4541616";
$ hostname = "localhost";
$ dbh = mysql_connect($ hostname、$ username、$ password)またはdie( "
をMySQLに接続できません");
$ selected = mysql_select_db( "spec"、$ dbh)またはdie( "first_testを選択できませんでした"); ?

//die(var_export($_POST,TRUE)); 

    $parent = $_POST['parent']; 
    $msg = $_POST['msg']; 
    $name = 'Akhtar Nutt'; 
    //$parent2 = json_decode($parent); 
    $msg_ID = '2q7b2sfwwe'; 
    //$msg2 = json_decode($msg); 
    $query = "INSERT INTO msg2_Qualities(id,name,msg,msg_id,parent) VALUES 
    ('','$name','$msg','$msg_ID','$parent')"; 
    if(!mysql_query($query, $dbh)) 
     {die('error:' .mysql_error()) 
     ;} 

>

答えて

2

アルター

request.send("parent=" + encodeURIComponent(parent).replace(/%20/g, '+')+"msg=" + encodeURIComponent(msg).replace(/%20/g, '+')); 

へ:

request.send("parent=" + encodeURIComponent(parent).replace(/%20/g, '+')+"&msg=" + encodeURIComponent(msg).replace(/%20/g, '+')); 

あなたは、クエリ文字列で引数の区切り&を逃している...

$_REQUESTの値を信頼できないものとして使用したくない場合もあります。スクリプトでPOSTのデータが必要な場合は、これらの値を$_POSTから取得します。

+0

私は両方を試しましたが、違いはありません、はい、それは私がそれを追加するだけでなく、それは違いはありません。 – XCeptable

+0

OK。次に、send.phpに開始時に「die(var_export($ _ POST、TRUE))」を実行させます。 XHR経由でデータを送信するとどうなりますか? –

+0

@ goreSplatter、少し説明できますか?私は死ぬ(var_export($ _ POST、TRUE)); send_mysql.phpの開始時、つまりデータベース接続後です。 XHR経由でデータを送信するとどういう意味ですか? – XCeptable

関連する問題