2016-07-18 19 views
0

私はajaxコールに問題があります。実際に私はPHP(cakephpフレームワーク)でウェブサイトをプログラミングしています。ポップアップが表示されたら、ユーザーは「はい」または「いいえ」のいずれかのボタンを選択しなければなりません。しかし、なぜ動作しないのか分かりません。cakephpのAjaxコール

は、ここに私のコードです:ビュー(suivis.ctp)

<title>jQuery UI Dialog - Modal confirmation</title> 
    <link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css"> 
    <script src="//code.jquery.com/jquery-1.10.2.js"></script> 
    <script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script> 
    <link rel="stylesheet" href="/resources/demos/style.css"> 

<script> 
$(function() { 

    // yes = 1, no = 0 
    function recordClick(val) { 
    console.log('sending...'); 

    // return ajax call, which returns a Promise object 
    return $.ajax({ 
     url: 'controller/method', 
     method: 'POST', 
     data: {the_value: val}, 
     complete: function() { 
     console.log('Data was sent!'); 
     } 
    }); 
    } 

    $("#dialog-confirm").dialog({ 
    modal: true, 
    buttons: { 

     "Oui": function() { 
     recordClick(1).then(function() { 
      $(this).dialog("close"); 
     }); 
     }, 

     "Non": function() { 
     recordClick(0).then(function() { 
      $(this).dialog("close"); 
     }); 
     } 
    } 
    }); 

}); 
</script> 


<div id="dialog-confirm" title="Confirmation de paiement"> 
    <p><span class="ui-icon ui-icon-alert" style="float:left; margin:0 7px 20px 0;"></span>Avez vous effectué le paiement ? </p> 
</div> 

recordClickは(0)私はそれをポップアップ閉じることができないと私は理由を理解していない動作しません。また、私のURLは

、ここでは私のコントローラだ...多分間違っている:あなたは助けるためにAccountsController.php

public function suivis() 
{ 
      if ($this->request->is('ajax')) { 
    $value_to_save = $this->request->data['the_value']; 

    if ($value_to_save == 1) { 
     $this->redirect(array('controller'=>'Accounts','action'=>'commander')); 
     $this->Commande->addsave('yes'); 
    } else { 
     $this->redirect(array('controller'=>'Accounts','action'=>'commander')); 
     $this->Commande->addsave('no'); 
    } 
    } 

ありがとうございました。

+0

'url: 'controller/method'、 'これは現在のURLとの相対的なものです。つまり、コードが固定されておらず、なぜコードが機能しないのかがわかります。 – AD7six

+0

そうだと思っていますが、いろいろなURLを試しましたが、どうすればURLを "構成"できますか?リクエストがAccountsController.phpファイル(suivis関数)に送信されなければならないことを知っていれば、デフォルトでは ''/ controller/method' 'が –

+1

になります。それが動作する場合、リダイレクトを発行しています - 何もしません。正確に「うまくいかない」とはどういう意味ですか - コードが何を期待していますか? jsエラーのコンソールと開発者ツールのネットワークタブを見て、あなたのajaxリクエストが何をしているのかを見てください。 – AD7six

答えて

-1

あなたのJSでこれを試してみてください:

$.ajax({ 
     url: 'AccountsController.php', 
     data: {val: val}, 
     complete: function() { 
     console.log('Data was sent!'); 
     } 
    }); 

とあなたのphp、値を使用して:

echo ($_GET['val']); 
+0

可動部品に精通していない場合は、質問に答えないでください。 'url: 'AccountsController.php'、' CakephpのバージョンにはそのようなURLがありません。 -1。 – AD7six

+0

私はちょうど@ AD7sixを助けようとしていた –

+0

それも動作していない、私はrecordClik関数を維持する必要がありますか?エコーで何を受け取ったのかは、後で保存するためにどの変数を使用するのかわからないためです。 –

1

を、私はあなたが無効な相対URLにあなたのAjaxリクエストに見つからないエラーを取得していると思いますパス。あなたのレイアウトファイルで

<base href="<?php echo $this->Url->build('/'); ?>"> 

headタグの下に線の下にベースのタグを追加は、URLで参照パスするのに役立ちます。これはajaxのurl: 'controller/method'でも有効です。 Refere https://developer.mozilla.org/en/docs/Web/HTML/Element/base

私はそれがあなたのために働くことを望む。