jquery post和get方法在远程服务器上不起作用

jquery post和get方法在远程服务器上不起作用,jquery,ajax,cakephp,path,remote-server,Jquery,Ajax,Cakephp,Path,Remote Server,以下jquery代码在本地服务器上运行良好,但在远程服务器上不起作用。仅供参考,远程服务器正在识别jquery。我已经完成了 请在上签出问题页面。我进去的时候banana8@gmail.com作为电子邮件id(在父信息中)并按tab键,应自动填写所有后续表单元素。但它在这里并没有这样做 以下是chrome开发者工具针对/students/get_parent_info的网络标题: Request URL:http://www.merryflowers.com/students/get_paren

以下jquery代码在本地服务器上运行良好,但在远程服务器上不起作用。仅供参考,远程服务器正在识别jquery。我已经完成了

请在上签出问题页面。我进去的时候banana8@gmail.com作为电子邮件id(在父信息中)并按tab键,应自动填写所有后续表单元素。但它在这里并没有这样做

以下是chrome开发者工具针对/students/get_parent_info的网络标题:

Request URL:http://www.merryflowers.com/students/get_parent_info
Request Method:POST
Status Code:200 OK
Request Headersview source
Accept:*/*
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Connection:keep-alive
Content-Length:52
Content-Type:application/x-www-form-urlencoded; charset=UTF-8
Cookie:CAKEPHP=b0103aa50047806a7063301569298541
Host:www.merryflowers.com
Origin:http://www.merryflowers.com
Referer:http://www.merryflowers.com/students/add
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.162 Safari/535.19
X-Requested-With:XMLHttpRequest
Form Dataview URL encoded
data[MerryParent][email]:banana8@gmail.com
Response Headersview source
Connection:Keep-Alive
Content-Type:text/html; charset=UTF-8
Date:Fri, 20 Apr 2012 18:56:03 GMT

Keep-Alive:timeout=5, max=100
P3P:CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"
Server:Apache
Transfer-Encoding:chunked
X-Powered-By:PHP/5.2.17
网络响应和预览:

****************************************
仅供参考,我已经核实了现有的banana8@gmail.com.

在阅读了lazerblade的答案后,我检查了www和public_html文件夹中的index.php和test.php。我在远程服务器上的根目录是/home/aquinto1。很久以前我就对这些文件进行了更改。我现在没有修改这里的任何内容

以下是我的代码:

index.php

if (!defined('ROOT')) {
    define('ROOT', DS.'home'.DS.'aquinto1');  
    //define('ROOT', dirname(dirname(dirname(__FILE__))));
}
/**
 * The actual directory name for the "app".
 *
 */

if (!defined('APP_DIR')) {
    define('APP_DIR','app');
    //define('APP_DIR', basename(dirname(dirname(__FILE__))));
}
/**
 * The absolute path to the "cake" directory, WITHOUT a trailing DS.
 *
 */

if (!defined('CAKE_CORE_INCLUDE_PATH')) {
    //define('CAKE_CORE_INCLUDE_PATH', ROOT);
    define('CAKE_CORE_INCLUDE_PATH', DS.'home'.DS.'aquinto1');

}
test.php

if (!defined('ROOT')) {
    define('ROOT', DS.'home'.DS.'aquinto1');  
    //define('ROOT', dirname(dirname(dirname(__FILE__))));
}
/**
 * The actual directory name for the "app".
 *
 */

if (!defined('APP_DIR')) {
    define('APP_DIR','app');
    //define('APP_DIR', basename(dirname(dirname(__FILE__))));
}
/**
 * The absolute path to the "cake" directory, WITHOUT a trailing DS.
 *
 */

if (!defined('CAKE_CORE_INCLUDE_PATH')) {
    //define('CAKE_CORE_INCLUDE_PATH', ROOT);
    define('CAKE_CORE_INCLUDE_PATH', DS.'home'.DS.'aquinto1');
}


<script type="text/javascript">
   //var j=jQuery.noConflict();
  $(document).ready(function(){
      $("#MerryParentEmail").change(function(){
        //txt=$("#MerryParentEmail").val();
        email_id=$("#MerryParentEmail").serialize();
        $.post("/students/get_parent_info",email_id,function(result_str){
        result_array=result_str.split('*****');
          $("#MerryParentInitial").val(result_array[0]);
          $("#MerryParentName").val(result_array[1]); 
          $("#MerryParentLandline").val(result_array[2]);
          $("#MerryParentMobile").val(result_array[3]); 
          $("#MerryParentAddress").val(result_array[4]);
          $("#MerryParentStateId").val(result_array[5]);
          state=result_array[5];
          txt_str="state_id="+state;
          $.get("/students/getcities",txt_str,function(result){
            $("#MerryParentCityId").html(result).show();
            $("#MerryParentCityId").val(result_array[6]);
          });
          $("#MerryParentPostalCode").val(result_array[7]);
        });
      });

       $("#MerryParentStateId").change(function(){
        state=$(this).val();
        txt_str="state_id="+state;
        $.get("/students/getcities",txt_str,function(result){
            $("#MerryParentCityId").html(result).show();
        });
       });
 });
 </script>
if(!defined('ROOT')){
定义('ROOT',DS.home'.DS.aquinto1');
//定义('ROOT',dirname(dirname(dirname(_文件__)));
}
/**
*“应用程序”的实际目录名。
*
*/
如果(!已定义('APP_DIR')){
定义('APP_DIR','APP');
//定义('APP_DIR',basename(dirname(dirname(_文件)));
}
/**
*“cake”目录的绝对路径,不带尾随DS。
*
*/
如果(!已定义('CAKE\u CORE\u INCLUDE\u PATH')){
//定义('CAKE\u CORE\u INCLUDE\u PATH',ROOT);
定义('CAKE_CORE_INCLUDE_PATH',DS.home'.DS.aquinto1');
}
//var j=jQuery.noConflict();
$(文档).ready(函数(){
$(“#MerryParentEmail”).change(函数(){
//txt=$(“#MerryParentEmail”).val();
email_id=$(“#MerryParentEmail”).serialize();
$.post(“/students/get\u parent\u info”),电子邮件id,函数(result\u str){
结果数组=结果字符串拆分('*****');
$(“#MerryParentInitial”).val(结果\u数组[0]);
$(“#MerryParentName”).val(结果数组[1]);
$(“#MerryParentLandline”).val(结果数组[2]);
$(“#MerryParentMobile”).val(结果数组[3]);
$(“#MerryParentAddress”).val(结果数组[4]);
$(“#MerryParentStateId”).val(结果数组[5]);
状态=结果_数组[5];
txt_str=“state_id=“+state;
$.get(“/students/getcities”,txt\u str,函数(结果){
$(“#MerryParentCityId”).html(result.show();
$(“#MerryParentCityId”).val(结果数组[6]);
});
$(“#MerryParentPostalCode”).val(结果数组[7]);
});
});
$(“#MerryParentStateId”).change(函数(){
state=$(this.val();
txt_str=“state_id=“+state;
$.get(“/students/getcities”,txt\u str,函数(结果){
$(“#MerryParentCityId”).html(result.show();
});
});
});
学生\管理员的“获取家长\信息”功能和“获取城市”功能:

function get_parent_info(){
//$this->layout=false;
 if (!empty($this->data)){

    $merryparent_info=$this->Student->MerryParent->getMerryParents($this->data['MerryParent']['email']);
    print_r($merryparent_info);
    echo $merryparent_info['MerryParent']['initial'].'*****';
    echo $merryparent_info['MerryParent']['name'].'*****';
    echo $merryparent_info['MerryParent']['landline'].'*****';
    echo $merryparent_info['MerryParent']['mobile'].'*****';
    echo $merryparent_info['MerryParent']['address'].'*****';
    echo $merryparent_info['MerryParent']['state_id'].'*****';
    echo $merryparent_info['MerryParent']['city_id'].'*****';
    echo $merryparent_info['MerryParent']['postal_code'].'*****';
    }
}

function getcities(){
    $this->data['MerryParent']['state_id']=$_GET['state_id'];
    if (!empty($this->data['MerryParent']['state_id'])){
       $cities = $this->Student->MerryParent->City->getCities($this->data['MerryParent']['state_id']);
    //print_r($cities);
    foreach ($cities as $k=>$v){
            echo '<option value="'.$k.'">'.$v.'</option>';
    }

        /* foreach($cities as $optionValue){
            echo '<option>' . $optionValue . '</option>';
        }*/
    }else{
        $this->Session->setFlash('You didn\'t select a state!');
    }

}
函数get\u parent\u info(){ //$this->layout=false; 如果(!empty($this->data)){ $merryparent_info=$this->Student->merryparent->getMerryParents($this->data['merryparent']['email']); 打印($merryparent\u info); echo$merryparent_info['merryparent']['initial'].*****; echo$merryparent_info['merryparent']['name'].*****; echo$merryparent_info['merryparent']['landline'].*****; echo$merryparent_info['merryparent']['mobile'].*****; echo$merryparent_info['merryparent']['address'].*****; echo$merryparent_info['merryparent']['state_id'].*****; echo$merryparent_info['merryparent']['city_id'].*****; echo$merryparent_info['merryparent']['postal_code'].*****; } } 函数getcities(){ $this->data['MerryParent']['state\u id']=$\u GET['state\u id']; 如果(!empty($this->data['MerryParent']['state_id'])){ $cities=$this->Student->MerryParent->City->getCities($this->data['MerryParent']['state\u id']); //印刷(城市); foreach($k=>v的城市){ 回音“.$v.”; } /*foreach($optionValue形式的城市){ 回显“.$optionValue.”; }*/ }否则{ $this->Session->setFlash('您没有选择状态!'); } }
默认情况下,您不能跨不同的域发出XHR请求

您需要动态生成脚本标记并使用JSONP

这里有一篇文章似乎讲述了如何做到这一点:


另外,需要注意的是,这可能会导致安全问题。

我认为这里的问题与本地主机文件结构和根路径位置以及远程服务器文件结构和根路径位置之间的差异有很大关系。首先,您的url,即使是AJAX调用,也不应该从根目录进行路径选择。您的公共文件夹(www,public_html)应该将流量重定向到您的框架中,这样您就可以维护SEO友好的URL和更安全的站点,以防PHP以某种方式失败。也就是说,您的AJAX url应该仍然是www.merryflowers.com/students/get_parent_info,其中students是您的控制器,get_parent_info是您在students控制器中的函数。如果它在本地工作,那么它应该远程工作,但它需要正确的路径才能到达它需要去的地方。我猜您的本地设置包括一个htdocs文件夹,而您的远程服务器,如您所述,包括www和public_html文件夹(可能是simlinked)。首先检查代码中的路径引用差异-本地路径远程不存在,文件夹结构差异,等等。。。然后检查您的配置、引导和任何其他定义路径的文件,并相应地修改它们。我还将用MVC、PHP、Apache(如果您使用的是Apache、ISAPI或其他什么)、htaccess和path重新标记您的问题。

好的,问题在于MerryParent模型中的代码。我的jquery代码中没有任何错误

在MerryParent模型中

function getMerryParents($field_value){         
if (is_int($field_value))         
    $conditions=array('merryParent.id'=>$field_value);         
else         
    $conditions=array('merryParent.email'=>$field_value);         

//debug($conditions);         

$merryparent_info=$this->find('first',array(         
                            'conditions'=>$conditions,         
                            'recursive'=>-1   //fetches merry_parents table data only not the associated data         
                            ));         
      debug($merryparent_info);         
return $merryparent_info;         
}         

我将merryParent.id更改为merryParent.id,将merryParent.email更改为merryParent.email,并且它现在可以在远程服务器上工作。:)

这对我很管用。。我也面临同样的问题