2009-12-21 3 views
0

MISE À JOURpas en mesure de recevoir des données POST dans le fichier php

c'est la capture d'écran de l'alerte:

alt text http://img163.imageshack.us/img163/5078/screenshot20091222at346.png

je suis en utilisant la fonction JQuery suivante pour POST avec succès des données au user_submit Fichier .php, c'est juste que le fichier php est incapable de recevoir les données.

$(function() { 
     $("#submit_js").click(function() { 
     $.post("user_submit.php", { 
      comment: $("#comment").val() 
     }); 
     }); 
    }); 

sur la finition de la consoloe Firebug montre ceci:

<html> 
<body> 

Your vote was successfully registered!any text but this 
</body> 
</html> 

Je suis coller l'intégralité du fichier de user_submit.php ici:

<html> 
<body> 

<?php 

$vote = $_REQUEST['vote']; 
$aid = $vote; 


//$comment = $_REQUEST['#comment']; 
//$comment = print_r($_POST); 
$comment = htmlspecialchars($_POST["comment"]); 
//$comment = $_POST['comment']; 
//echo htmlspecialchars($comment); 
//$comment = $_POST['comment']; 
//echo $comment; 

    // include configuration file 
    include('config.php'); 

    // open database connection 
    $connection = mysql_connect($host, $user, $pass) or die('ERROR: Unable to connect!'); 

    // select database 
    mysql_select_db($db) or die('ERROR: Unable to select database!'); 

    // update vote counter 
    $query = "UPDATE answers SET acount = acount + 1 WHERE aid = $vote"; 
    $result = mysql_query($query); 
    $cadd = "INSERT INTO comments (comment,aid) VALUES ('$comment', '$aid')"; 
    mysql_query($cadd); 

    // close connection 
    mysql_close($connection); 

    // print success message  
    echo 'Your vote was successfully registered!'; 
    echo $comment; 
    //print_r(array_count_value($comment)); 

?> 


</body> 
</html> 

s'il vous plaît, aidez-moi. J'ai été coincé avec cela pendant des heures maintenant.

** EDIT: Comme l'a demandé le code HTML du bouton Soumettre **

<div id="greetings"> 
        You are voting out <b style="color: #00b0de;" id=roadiename></b>. Care to explain why?<br/><br/> 
        <textarea name="textarea" id="comment" cols="38" rows="7">textarea</textarea><br> 
        <a href="#" id="submit_js"><img src="images/submit.gif" style="border: none; float:right; padding-top: 10px;padding-right: 10px;"/></a> 
       </div> 
+0

Lorsque vous envoyez les données, la valeur du paramètre de chaîne de requête 'comment' est-elle "n'importe quel texte mais ceci"? –

+0

oui. C'est le texte que j'ai tapé dans le textarea. – amit

+0

Ensuite, il semble que le fichier PHP reçoit bien les données POST .. que voulez-vous dire, il est «incapable de recevoir les données»? –

Répondre

1

EDIT:

bien Ok l'écran tir signifie que tout est soumis correctement à votre page php. Alors, comme nous le disions, le problème est avec votre SQL. Depuis le vote SQL semble bien fonctionner, il est localisé pour vous insérer en essayant d'effectuer.

Si vous le pouvez, pouvez-vous poster le schéma SQL pour votre "commentaires" table.

également pendant que vous faites cela avez-vous essayé de lancer la même requête avec quelques données de test directement à partir de la ligne de commande ou d'un client gui vers le serveur sql?

par exemple de la ligne de commande: mysql -u $ -p $ USER BASE DE DONNÉES INSERT INTO commentaires (commentaire, aide) VALUES ('! J'ai quelque chose à dire', AIDE $); Où $USER est votre nom d'utilisateur, et $DATABASE est votre nom de fichier ...Vous serez bien sûr invité à entrer le mot de passe pour votre utilisateur.

Maintenant je ne suis pas sûr de ce que votre schéma ressemble donc si aid est une auto-increment vous ne devriez pas fournirez une valeur, si son pk quelque chose d'arbitraire mais unique pour $AID (en vous assurant qu'il correspond au type de colonne -. Par exemple int, texte, varchar, etc ..)

renvoyer votre schéma et quel que soit le résultat que la requête de test vous donne.

EDIT:

OK Je veux que vous fassiez ceci puis ammend votre question avec la sortie:

utiliser ce code pour la soumission (en supposant #commentaire est toujours l'identifiant du textarea:

$("#submit_js").click(function() { 
    $.post(
    "user_submit.php", 
    {comment: $("#comment").val()}, 
    function(data){ 
     alert(data); 
    }); 
}); 

Mettre dans votre user_submit.php et commentez tout le reste:

print "Request Data is:\n"; 
print_r($_REQUEST); 
print "\n\nPost data is:\n"; 
print_r($_POST); 

Publiez ce que vous voyez dans la fenêtre d'alerte qui apparaît.

EDIT:

j'ai posté le mis à jour user_submit.php. cela met même maintenant à jour le texte en ajax. il est toujours incapable de imprimer le commentaire - Amit

Je pense que je sais ce qu'il est ... exactement quel type d'élément est #comment? Pouvez-vous publier le code HTML pertinent à partir de votre page de soumission?

EDIT:

Je pense que vous êtes confus au sujet de la façon dont fonctionne ajax. Vous supposez que cela fonctionne comme si vous soumettiez un formulaire à une page php, alors cette page s'affiche dans le navigateur. Ce n'est pas ce qui arrive. Au lieu de cela, vous postez sur une page et vous obtenez une réponse http, au lieu de rendre cette réponse au navigateur, vous l'obtenez comme une variable javascript. Ensuite, vous devez faire quelque chose avec cette variable - comme l'ajouter à la page quelque part. Le problème est que vous n'avez rien fait avec la réponse que vous obtenez.

Ok, donc ...

"@BranTheMan: pourquoi isnt il echo'ing le texte et pourquoi isnt il ajouter quoi que ce soit à la DB - Amit?"

Il ne fait pas écho à anythign dans votre page parce que vous ne le dites pas. Ce que vous avez vu dans la console firebug est le corps de la réponse. Cela ne va pas dans votre page avec $.post. Il jsut fait l'appel et vous donne la réponse. Si vous voulez faire écho dans la page actuelle, vous devez lui dire de le faire.

par exemple avec les choses que vous avez énumérés ci-dessus:

$("#submit_js").click(function() { 
    $.post(
     "user_submit.php", 
     {comment: $("#comment").val()}, 
     function(data){ 
     $('#submit_js').append($('body', data).html()); 
     }); 
}); 

Quant à votre SQL je ne sais pas pourquoi il est de ne pas ajouter correctement ...ça semble bien. Avez-vous vérifié vos journaux pour les erreurs SQL? Peut-être à travers une vérification d'erreur sur le retour de la requête.

+0

je n'ai pas eu vous. pourquoi ça ne va pas à la page php avec $ .post? et comment puis-je y aller? – amit

+0

RIEN ne va pas avec PHP en termes d'obtention de la valeur de poste - Firebug le démontre. Suivez mes instructions ou celle de Munch pour faire écho le message de réponse dans la page de votre publication. – prodigitalson

+0

même avec l'exemple ci-dessus, les choses ne se sont pas améliorées.c'est vraiment me tuer .. – amit

3

essayer:

$("#submit_js").click(function() { 
    $.post("user_submit.php", {comment: $("#comment").val()}, function(data){ 
     alert(data); 
     //this is the function where you would handle the returned text/html/json 
     //whatever that you're php script returns. The data is what you're seeing 
     //inside firebug. 
    }); 
}); 

Voici la documentation $.post

EDIT

Le problème est que vous êtes expec ting PHP pour gérer un écho, ce qu'il fait, mais parce que c'est une requête AJAX, le javascript doit faire quelque chose avec ce que le serveur lui envoie. Votre javascript n'avait aucune sorte de gestionnaire dedans. PHP retournait les valeurs que vous lui aviez données, et le navigateur l'obtenait, il ne faisait rien avec. En ce qui concerne la base de données, je m'assurerais que vous établissez une connexion à la base de données et que les variables que vous utilisez contiennent quelque chose. Vous aussi ne pas envoyer une valeur $_REQUEST['vote'] au script dans votre POST et ce n'est pas dans votre URL, de sorte que ce serait la raison pour laquelle la première requête n'est pas mise à jour

+0

il alerte le texte de la console firebug complet avec étiquettes. n'aide pas beaucoup. – amit

+0

je n'ai pas suivi votre partie EDIT. cqn vous s'il vous plaît élaborer? – amit

+1

lorsque vous utilisez AJAX, le javascript fait une demande à votre serveur (PHP), votre serveur effectue le traitement, et remet en option les informations au javascript. Le js est responsable de la gestion des informations renvoyées par le navigateur. Les informations que vous voyez dans firebug et alert() sont celles que le navigateur reçoit de votre serveur. C'est à la fonction de rappel dans $ .post de gérer les données qui lui sont transmises. – munch

Questions connexes