2013-07-01 3 views
0

J'apprécie qu'il y ait beaucoup de messages sur ce sujet particulier mais aucun ne semble adresser mon problème particulier. J'utilise la méthode post de jQuery pour interroger une base de données pour une valeur égale au texte dans une zone de saisie. Le résultat renvoyé est censé être affiché dans la zone de saisie de texte ci-dessous. Mais pour une raison quelconque, la condition de succès de la demande de publication n'est jamais exécutée. Logiquement cela suggère qu'il y a une erreur soit dans ma demande de publication, soit dans le fichier PHP sur lequel elle est postée, donc je vais coller le code des deux ici.JQuery ne reçoit pas le résultat d'une demande POST

Le jQuery

$(document).ready(function() { 
$('#title').change(function() { 
    var data = 'title='+$(this).val(); 
    $.post('getinfo.php', data, function(response){ 
     if(response.toString() == 'invalid') 
     { 
      alert('no such book title'); 
     } 
     else 
     { 
      alert('book found'); 
     } 
    }); 

    return false;  // required to not open the page when form is submited 
    }); 
    }); 

l'obtenir fichier info.php

<?php 

defined('C5_EXECUTE') or die(_("Access Denied.")); 

$title = $_post['title']; 

     $db = loader::db(); 
     $res = $db -> Execute('select isbn from btBookList where title = ?', array($title)); 

     if($res !=null) 
     { 
      $identifier = ''; 
      foreach($res as $row) 
      { 
      $identifier = $row['isbn']; 
      } 
      echo json_encode($identifier); 
     } 
     else 

      echo 'invalid'; 
?> 

Ceci est en béton 5 où les defined('C5_EXECUTE') or die(_("Access Denied.")); et

$db = loader::db(); 
      $res = $db -> Execute('select isbn from btBookList where title = ?', array($title)); 
+0

vous autorisez l'injection sql via la variable title post. Je crois que votre problème est avec la partie des données de votre message. – abc123

+0

Accédez-vous localement à votre fichier jQuery ou via un serveur Web? (même si c'est hébergé localement) .. au fond, l'URL dans votre barre d'adresse commence par 'http', ou 'fichier'? Si ce dernier cas, vous pouvez rencontrer une erreur de fichier de stratégie interdomaines (http://en.wikipedia.org/wiki/Same_origin_policy) – Alfie

+0

Que se passe-t-il lorsqu'il n'y a aucune ligne correspondante? Est-ce que $ res devient réellement nul ou est-ce un tableau vide? Avez-vous essayé d'examiner la requête/réponse réseau depuis/vers votre page getinfo.php à l'aide des outils de développement Chrome, Safari ou Firefox? – SnowInferno

Répondre

0

données Pass en param:

var data = {'title' : $(this).val()}; 
$.post('getinfo.php', data,function(response){ 
alert("Success: " + response); 
}).fail(function() { 
alert("Failed..."); 
}); 
+0

Les valeurs de chaîne de requête peuvent-elles être capturées à partir du tableau $ _POST? – vee

+0

Je ne sais pas, plus je le pense. Faire un test –

+0

FYI: juste contourné, le tableau $ _POST ne considère pas les paramètres de la chaîne de requête :). – vee

0

Je pense que c'est la façon dont vous récupérez les données «postées». Essayez d'utiliser $title = $_POST['title']; (c'est-à-dire $_POST en majuscules) dans votre getinfo.php.

0

Votre appel ajax est correct. La condition de succès de la demande de publication ne s'exécute jamais car une erreur se produit dans getinfo.php. Il peut être à cause de $_post['title'] il devrait être $_POST['title']. Veuillez vérifier le texte de la réponse dans la console.

Questions connexes