【问题标题】:SilverStripe - JavaScript variable not successfully being sent via AJAX to Page.phpSilverStripe - JavaScript 变量未成功通过 AJAX 发送到 Page.php
【发布时间】:2018-01-05 01:04:36
【问题描述】:

我正在尝试将模板中的 JavaScript 变量发送到 Page.php 中名为“getMemberships”的函数,但尝试使其工作时遇到了很多麻烦。

我知道 JavaScript 函数 ssCallBack 确实可以工作并从 SharpSpring 获取用户信息。我知道如果你在这里硬编码电子邮件,getMemberships 函数可以工作:

$lists = $this->sharpSpringService->makeCall('getListMemberships', [
   'emailAddress' => 'youremail@site.com',
 ]);

我知道您可以使用 AJAX 向 PHP 提交 JavaScript 数据,我已经设置并尝试使用各种设置(尝试过 dataType: 'json', dataType: 'jsonP', dataType: 'html')但是,在@ 987654325@、$this->getRequest()->postVars('contactemail') 始终是一个空数组 ($contactEmail = {array}[0])。我不明白为什么会这样。

在 Page.ss 文件中:

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

在Page.php

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;

}

【问题讨论】:

    标签: javascript php ajax silverstripe


    【解决方案1】:

    你想要postVar('contactemail')。 postVars() 返回所有帖子变量。

    【讨论】:

    • 使用 postVar() 也不起作用。它只是返回一个空值,这是不正确的。
    • 我发现了这个问题。我用来测试的电子邮件实际上并不是我在 getMemberships 代码中引用的订阅列表的一部分,长话短说,这把一切都搞砸了。
    猜你喜欢
    • 2015-09-30
    • 2012-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-06
    • 1970-01-01
    • 2017-03-14
    • 2017-07-05
    相关资源
    最近更新 更多