J'ai un formulaire qui envoie les valeurs aux variables $ _POST ['person_id'], $ _POST ['accident_loc'], $ _POST ['message'] et $ _POST ['nom' ]comment obtenir le code de réponse http
Le fichier php insère les valeurs en tant qu'enregistrement dans la base de données, cela ne me pose aucun problème. Mais je veux retourner une erreur quand le formulaire n'envoie aucune valeur aux variables. Je veux dire quand je soumets un formulaire sans aucune valeur. donc j'ai fait une instruction if if(isset($_POST['person_id']) && isset($_POST['accident_loc']) && isset($_POST['message']) && isset($_POST['name'])){}
si cette instruction échoue, appelez la fonction "sendResponse()".
maintenant je veux ce fichier pour renvoyer le code de statut 400 à mon fichier javascript afin que je puisse écrire quelques conditions d'erreur. Mais quand j'ai essayé d'afficher la valeur du code de statut request.status
il m'a donné 0 comme ses valeurs
Ci-dessous mon fichier php .. pouvez-vous me dire comment envoyer le code de statut ??
<?php
//allowing access to the server which contains the following host-origin
if($_SERVER[HOST_ORIGIN]=="http:\\localhost")
header('Access-Control-Allow-Origin:http:\\http:localhost');
function sendResponse(){
header('HTTP/1.1 400 invalid request');
header('Content-type: text/html');
echo "invalid request";
}
if(isset($_POST['person_id']) && isset($_POST['accident_loc']) && isset($_POST['message']) && isset($_POST['name']))
{
//php mysql database info
require ("phpMysql_dbInfo.php");
//getting the arguments from the url
$person_id=$_POST['person_id'];
$accident_loc=$_POST['accident_loc'];
$message=$_POST['message'];
$name=$_POST['name'];
//connecting to the database
$connection= mysql_connect($local_host,$username,$password);
if(!$connection)
die(mysql_error()."</br>");
//selecting the db
$select_db= mysql_select_db($database_name);
if(!$select_db)
die(mysql_error()."</br>");
//inserting the values into the database
$query= sprintf("insert into messages_to_people(name,accident_location,message,person_id)
values('%s','%s','%s','%s')",
mysql_real_escape_string($name),
mysql_real_escape_string($accident_loc),
mysql_real_escape_string($message),
mysql_real_escape_string($person_id));
$result=mysql_query($query);
if(!$result)
echo mysql_error().'</br>';
}
else
sendResponse();
?>
MISE À JOUR: ici est mon javascript
function downloadXml (url,params,callback) {
var request= window.XMLHttpRequest ? new XMLHttpRequest(): new ActiveXObject('Microsoft.XMLHTTP');
request.onreadystatechange= function(){
if(request.readyState==4){
//gives me a zero when i try to display it through alert
alert(request.status);
callback(request, request.status);
}
};
request.open('POST',url,true);
request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
request.send(params);
}
si vous trouvez un problème dans mon javascript merci de me corriger
Regardez comment activer les rapports d'erreurs/avertissements en PHP, puis inspectez la réponse de PHP avec Fiddler ou Firebug. Je suspecte fortement qu'il vous avertira que les en-têtes ne peuvent pas être modifiés après que la sortie a été écrite - vous faites écho à votre erreur MySQL (qui en soi pourrait être une mauvaise idée) avant de définir l'en-tête de réponse. – tomfumb
Pourquoi exécutez-vous toujours 'sendResponse()'? Ne voulez-vous pas un 'else' là-bas, de sorte qu'il ne soit appelé que lorsque la condition' if' échoue? – pimvdb
ya que vous avez raison je suis désolé tout en le collant j'ai fait une erreur le corrigera maintenant – indr