テンプレート内の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;
}
postVar()を使用しても動作しません。 null値が返されますが、これは正しくありません。 –
私は問題を理解しました。私がテストしていた電子メールは、getMembershipsコードで参照していたサブスクリプションリストの一部ではありませんでした。 –