Je développe une application de téléphone où je dois envoyer quelques données d'un fichier html à un serveur et obtenir une sortie en réponse. Lorsque j'ai tous mes fichiers dans le serveur de sauvegarde, ils fonctionnent. Quand je divise les fichiers en machines client et serveur, ils ne fonctionnent pas et, pour autant que je sache, cela a à voir avec CROSS DOMAIN POST REQUEST. Voici mon code ci-dessous:
côté client: something.html
$(document).ready(function() {
$("#login").click(function(e){
var formData = $("#loginForm").serialize();
$.ajax({
type: "POST",
url: "http://testserver.bscheme.com/rss/login.php",
crossDomain: true,
cache: false,
data: formData,
success: function(txt){
if(txt !=""){
localStorage.setItem("background", txt);
//alert(localStorage.getItem("background"));
document.location.href="logged.html";
}
else
alert("Badly Failed");
}
});
e.preventDefault();
}); });
côté serveur: login.php
<?php
include('inc/db.php');
try
{
$userName = mysql_real_escape_string($_POST['username']);
$passcode = mysql_real_escape_string($_POST['passcode']);
if(empty($feedName)!="" && empty($feedUrl)!="") {
$result = mysql_query("SELECT id,email,password FROM user WHERE email = '".$userName."'");
$row = mysql_fetch_array($result);
//echo $userName . $row['email'];
// echo $passcode . $row['password'];
if($row['email']== $userName && $row['password'] == $passcode && $row['email']!= "" && $row['password'] != "") {
echo $row['id'];
}else{
echo "fail";
}
} else {
echo "All fields are mandatory!";
}
}
catch(Exception $e)
{
// normally we would log this error
echo $e->getMessage();
}
Comment autoriser CROSS DOMNAIN POST, je sais que je dois modifier mon fichier php serveur et j'ai ajouté le code suivant, mais je doive travailler soit
switch ($_SERVER['HTTP_ORIGIN']) {
case 'http://localhost/rss': case 'https://localhost/':
header('Access-Control-Allow-Origin: '.$_SERVER['HTTP_ORIGIN']);
header('Access-Control-Allow-Methods: POST, GET, OPTIONS');
header('Access-Control-Max-Age: 1000');
header('Access-Control-Allow-Headers: Content-Type');
break;
}
En utilisant Firebug je dis mon .POST de $, ce qui est que j'ai
ResponseHeaders requestHeaders l'application Content-Type/x-www-form-urlencoded; charset = UTF-8 Accepter /
Parametersapplication/x-www-form-urlencoded code asd nom d'utilisateur qwe Source nom d'utilisateur = qwe & code = asd
réponse
La réponse est toujours vide. Cela fonctionne quand tout le html et le php sont dans le localhost ou dans mon serveur de test. Mes compétences en php et en jquery manquent d'atm, ce qui me rend très difficile à comprendre, même si quelqu'un d'autre a déjà posé la question, je suis désolé de la répéter. Ty pour vous aider
Peut-être pouvez-vous utiliser getJSON de jQuery comme requête crossdomain. – machineaddict
Comment puis-je envoyer des données avec getJSON j'ai besoin d'envoyer un nom d'utilisateur et mot de passe (Got it) – Surja
Ne fais pas ça! Maintenant, je vois ce que vous essayez de faire. Faites le post ajax sur votre propre serveur, puis ce script envoie une requête au serveur distant. – machineaddict