2013-05-30 92 views
0

我正在开发一个phonegap应用程序,我需要从html文件发送一些数据到服务器并获得输出作为响应。 当我有我的所有文件在保存他们的工作服务器。当我将文件分割成客户机和服务器机器时,他们不工作,并且据我了解,它必须处理CROSS DOMAIN POST REQUEST。 这里是我下面的代码:

客户端: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(); 
    }); }); 

服务器端: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(); 
} 

如何允许CROSS DOMNAIN帖子,我知道我必须编辑我的服务器的PHP文件,我已经添加了下面的代码,但我的工作要么

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; 
} 

使用Firebug我说我的$ .POST,这是我有

ResponseHeaders RequestHeaders Content-Type application/x-www-form-urlencoded;字符集= UTF-8 接受/

Parametersapplication/X WWW的窗体-urlencoded 密码ASD 用户名QWE 源 用户名= QWE &密码= ASD

响应

响应总是空白。当所有的html和php都在本地主机或我的测试服务器上时,它都可以工作。 我的php和jquery技能缺乏atm,所以如果其他人已经提出了我很抱歉重复的问题,就很难理解它。 泰您帮助

+0

也许你可以使用jQuery中的getJSON作为跨域请求。 – machineaddict

+0

我怎样才能发送数据与getJSON我需要发送用户名和密码(明白了) – Surja

+0

不要这样做!现在我明白你在做什么。将ajax发布到自己的服务器上,然后该脚本向远程服务器发出请求。 – machineaddict

回答

0

的变化,我不得不做出: 客户端:something.html

$(document).ready(function() { 
$("#login").click(function(e){  
    var formData = $("#loginForm").serialize();  

var username; 
var passcode; 
username= document.getElementById('username').value; 
passcode = document.getElementById('passcode').value; 



    if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
     xmlhttp=new XMLHttpRequest(); 
    } 
    else 
    {// code for IE6, IE5 
     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
     xmlhttp.onreadystatechange=function() 
    { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
     var txt; 
     txt=xmlhttp.responseText; 
     //alert(txt); 
     localStorage.setItem("background", txt); 
     document.location.href="logged.html"; 
    } 
} 
xmlhttp.open("GET","http://testserver.bscheme.com/rss/login.php?username="+ username +"&passcode="+ passcode,true); 
xmlhttp.send(); 

}); 




}); 

更改服务器上的文件:login.php中

<?php 


header('Access-Control-Allow-Origin: *'); 
header('Access-Control-Allow-Methods: POST, GET, OPTIONS'); 
header('Access-Control-Max-Age: 1000'); 
header('Access-Control-Allow-Headers: Content-Type'); 


include('inc/db.php'); 

try 
{ 
$userName  = mysql_real_escape_string($_GET['username']); 
$passcode  = mysql_real_escape_string($_GET['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(); 
} 

所有我必须做的是确保服务器接受所有类型的头文件,并且客户端发送XMLHttpRequest并获取html响应而不是$ .Ajax();

相关问题