2012-04-18 9 views
0

次のjqueryコードはローカルサーバで正常に動作しますが、リモートサーバでは動作しません。 FYIリモートサーバーがjqueryを認識しています。私はそれを達成したMy Stackoverflow Qjquery postとgetメソッドがリモートサーバで動作しない

Merry Flowers Admission Pageで問題をチェックアウトしてください。 [email protected]とメールID(親情報)を入力してタブキーを押すと、それ以降のフォーム要素はすべて自動的に入力されます。しかし、ここでそれをしていません。

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]:[email protected] 
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 

ネットワーク応答およびプレビュー:以下

がためのChromeの開発ツールからネットワークヘッダ/学生/ get_parent_infoあるFYI

**************************************** 

、私はすでにそこに存在していることを確認しました[email protected]のレコード。

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> 

students_controllerのget_parent_infoのFUNCとgetcitiesのFUNC:

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!'); 
    } 

} 

答えて

2

デフォルトでは、あなたはできる'異なるドメイン間でXHR要求を行う

スクリプトタグを動的に生成し、JSONPを使用する必要があります。ここで

はそれを行う方法をカバーしているようだ記事です:http://cjihrig.com/blog/remote-ajax-calls-using-jsonp/

また、これはセキュリティ上の問題を引き起こす可能性があることに注意することが重要です。

+0

私のドメイン内にajaxの投稿リクエストを作成しています。クロスドメインではありません。/students/get_parent_infoと/ students/get_citiesはどちらも私のドメイン内にあります。 – vaanipala

+0

私の質問に言及したように、私のドメインはhttp://www.merryflowers.comです。 get_parent_info関数とgetcities関数は、モデルを使用してデータベーステーブルからデータを取得しています。 – vaanipala

0

ここでの問題は、ローカルホストのファイル構造とルートパスの場所とリモートサーバーのファイル構造とルートパスの場所の違いと大きく関係していると思います。まず、あなたのURLは、AJAX呼び出しの場合でも、ルートからパッチされるべきではありません。あなたのパブリックフォルダ(www、public_html)は、あなたのフレームワークにトラフィックをリダイレクトする必要があるため、SEOに優しいURLとより安全なサイトを維持します。あなたのAJAXのURLはまだwww.merryflowers.com/students/get_parent_infoでなければなりません。学生はあなたのコントローラで、get_parent_infoは学生のコントローラの中のあなたの機能です。ローカルで作業している場合は、リモートで動作するはずですが、必要な場所に到達するには正しい経路が必要です。あなたのローカルセットアップにはhtdocsフォルダが含まれていると推測していますが、あなたのリモートサーバには、wwwとpublic_htmlフォルダ(おそらくsimlinked)が含まれています。まず、リモートで存在しないパスウェイ、フォルダ構造の違いなど、コードのパス参照の違いを確認してから、config、ブートストラップ、パスウェイを定義するその他のファイルを調べ、それに応じて変更します。また、MVC、PHP、Apache(ApacheやISAPIなどを使用している場合)、htaccess、およびpathを使用して質問を再タグ付けします。

+0

私はあなたの提案を試し、ここに戻ってきます。ありがとう。 – vaanipala

+0

ディレクトリ構造が定義されているindex.phpとtest.phpで質問を更新しました。見てください。 – vaanipala

0

問題は、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.emailにMerryParent.idとmerryParent.emailにmerryParent.idを変更し、それがリモートサーバー上で動作するようになりました。 :)これは私のために働いた

0

は..私は同じ問題に直面したが、それは二つのステップ

1)を、以下のことによって解決されます。 jqueryと他のjsファイルを参照していましたが、私は相対パスの代わりにIPアドレスに変更しました。

2)すべてのhttp取得要求で、私は正しいIPアドレスでlocalhostを置き換えました。

ありがとうLazerblade。あなたは私をたくさん助けました。

Mukharjee

関連する問題