2017-07-28 17 views
0

テンプレート内のJavaScript変数をPage.phpの 'getMemberships'という関数に送信しようとしていますが、問題が発生しています作業。SilverStripe - JavaScript変数がAJAX経由でPage.phpに正常に送信されない

私はJavaScript関数ssCallBackが動作し、SharpSpringからユーザー情報を取得することがわかりました。そして、私はgetMembershipsの機能を知っているあなたはここに電子メールをハードコーディング場合は動作します:「JSON:

$lists = $this->sharpSpringService->makeCall('getListMemberships', [ 
    'emailAddress' => '[email protected]', 
]); 

を私はあなたが私がセットアップされ、各種設定(しようとしたデータ型を使用して試してみましたAJAXを使用してPHPにJavaScriptのデータを提出することができることを知っています'、dataType:' jsonP '、dataType:' html ')ですが、getMembershipsでは、$this->getRequest()->postVars('contactemail')は常に空の配列($contactEmail = {array}[0])です。なぜこのようなことが起こるのか理解できません。

Page.ssファイルで:Page.php

function ssCallBack(resp) { 
    if (typeof resp.contact != 'undefined') { 
       //this contact exists in SharpSpring 
       console.log(resp.contact['Email']); 
       var isSubscribed = false; 
       var contactEmail = resp.contact['Email']; 
       console.log(contactEmail); 
       $.ajax({ 
        type: "POST", 
        url: "/home/getMemberships", 
        data: { 
         contactemail:contactEmail 
        } 
       }).done(function (response) { 
        for (var i = 0; i < response.length; i++) { 
         console.log(response[i].status); 
         var status = response[i].status; 
         var list = response[i].list; 
         if (status == "true") { 
          if(list =="PositionistView"){ 
           isSubscribedToPV = true; 
          } 
         } 
        } 
       }); 
      } 

public function getMemberships(){ 
    $pvListID = [REDACTED]; 
    $listName = "[REDACTED]"; 
    $inPVList = false; 
    $contactEmail = $this->getRequest()->postVars('contactemail'); 
    $converted_result =""; 
    $pvSubscription = null; 
    $return = []; 
    $sharpSpringService = null; 
    $this->sharpSpringService = new SharpSpringService("[REDACTED", "[REDACTED"); 

    if($contactEmail != null && $contactEmail !=""){ 
     $lists = $this->sharpSpringService->makeCall('getListMemberships', [ 
      'emailAddress' => $contactEmail, 
     ]); 


     if (count($lists) > 0) { 
      $listArray = json_decode(json_encode($lists), true); 

      foreach($listArray as $list){ 

       if($list = $pvListID){ 
        //the user is subscribed 
        $inPVList = true; 
        $converted_result = ($inPVList) ? 'true' : 'false'; 
       } 
      } 
     } 
     $return[] = array(
      "status" => $converted_result, 
      "list" => $listName 
     ); 
     return json_encode($return); 
    } 
    return $return; 

} 

答えて

1

あなたはpostVar('contactemail')をしたいです。 postVars()はすべてのポスト変数を返します。

+0

postVar()を使用しても動作しません。 null値が返されますが、これは正しくありません。 –

+0

私は問題を理解しました。私がテストしていた電子メールは、getMembershipsコードで参照していたサブスクリプションリストの一部ではありませんでした。 –

関連する問題