2010-08-04 7 views
1

Je suis en train d'utiliser POST pour passer des variables à chat.php de try.htm

Le code pour try.htm est:

<head> 
<script type = "text/javascript" src = "http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 
<script type = "text/javascript"> 
    function yo() { 
     var text = $("#msg").val(); 
     $.post("chat.php",msg:text); 
    } 
</script> 
</head> 
<body> 

<input type="text" id="msg" onkeyup="yo()"> 
<div id="display">Change</div>    
</body> 

Le code pour chat.php est:

<?php 
$msg=$_POST['msg']; 
mysql_connect("localhost","root"); 
mysql_select_db("user"); 
mysql_query("INSERT INTO user (name,pwd,status) VALUES ('$msg','work','0')") or die(mysql_error()); 
?> 

Le problème est que la variable 'msg' ne semble pas être passée sur chat.php! Qu'est-ce qui ne va pas?

+0

En fait, vous devriez obtenir une erreur de syntaxe/analyse. –

Répondre

2

Modifier à:

$.post("chat.php", { msg:text }); 

jQuery attend les données à transmettre comme un objet et { ... } sera essentiellement créer un objet anonyme pour nous. msg:text - sans les accolades - malheureusement, ne fait pas beaucoup et va lancer et d'erreur à l'exécution.

Donc, mettre les deux ensemble: { msg:text } crée un objet anonyme avec une propriété de msg rempli avec la valeur de votre variable text.

0

Vous le faites mal, utilisez un bon objet JSON:

$.post("chat.php", { msg:text }); 
+0

Ce n'est pas un objet JSON. C'est un simple objet littéral JavaScript;) –

+0

Eh bien, devinez que vous avez raison :) –

0

Vous avez oublié les accolades autour du paramètre de données de .post $

$.post("chat.php",{msg:text}); 
1

Les paramètres sont passés comme un tableau :

<head> 
<script type = "text/javascript" src = "http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 
<script type = "text/javascript"> 
    function yo() { 
     var text = $("#msg").val(); 
     $.post("chat.php", {msg:text}); 
    } 
</script> 
</head> 
<body> 

<input type="text" id="msg" onkeyup="yo()"> 
<div id="display">Change</div>    
</body>