我有一个表格,我正在提交给crm(ViciDial).我可以成功提交表格,但是如果我这样做,crm的处理文件将只 echo 成功文本,仅此而已.

我希望在我网站上显示感谢页,而不是文本,因此我决定使用Ajax提交表单并将其重定向到我需要的页面,但是我在浏览器上收到以下错误:

混合内容:"https://page.com"处的页面是通过HTTPS加载的,

这是我的Ajax脚本:

    <script>
    SubmitFormClickToCall = function(){

        jQuery.ajax({
            url: "http://XX.XXX.XX.XX/vicidial/non_agent_api.php",
            data : jQuery("#form-click-to-call").serialize(),
            type : "GET",
            processData: false,
            contentType: false,
            success: function(data){
                window.location.href = "https://www.example.com/thank-you";
            }
        });
    }
    </script>

仅仅在URL中设置https是行不通的,有没有什么方法可以通过GET提交数据并将用户重定向到我的感谢页面?

============================

这里的问题是混合内容,这意味着我通过HTTPS加载了一个页面,并试图通过Ajax访问HTTP格式的API.但是浏览器不允许我们这样做.

因此,如果你不能将API设置为HTTPS(这是我的情况),我们仍然可以用不同的方式来实现.

主要问题不是混合内容的问题,而是我想要将数据提交给API,并将用户重定向到一个奇特的感谢页面.我没有使用ajax,而是制作了一个接收数据的php文件,使用curl将其发送到api(因为这是在服务器端完成的,没有混合内容问题),并将我高兴的用户重定向到一个漂亮的感谢页面.

推荐答案

如果使用HTTPS在浏览器中加载页面,浏览器将拒绝通过HTTP加载任何资源.正如你所try 的,changing the API URL to have HTTPS instead of HTTP typically resolves this issue.但是,您的API不能允许HTTPS连接.因此,您必须在主页上强制HTTP,或者请求它们允许HTTPS连接.

请注意:如果您转到API URL,而不是try 使用AJAX加载它,那么请求仍然有效.这是因为浏览器没有从安全页面中加载资源,而是加载了一个不安全的页面,并接受了这一点.不过,为了通过AJAX实现,协议应该匹配.

Php相关问答推荐

如果WooCommerce产品具有特定的产品标签,则将元盒添加到管理WooCommerce产品

更新WooCommerce高性能订单存储(HPOS)的管理员自定义订单元数据

Laravel有一个具有两个匹配字段

尽管包含目标日期,但日期范围比较仍有意外输出

在php中有没有办法比较两个包含相同枚举类型的枚举数组

MULTI UPDATE Laravel为什么只能更新我的第一行

PHP测试字符串的所有POST值

Chillerlan/php-iOS名称字段的QR vCard错误

如何从该字符串中删除这些图标转换的ASCII问号字符?

在Laravel中从动态嵌套数组中获取值

如何按类别过滤自定义帖子类型

如何使用定制的StateProvider设置JsonLd@上下文?

如何配置我的.env文件以在laravel的一个项目中连接两个不同的数据库?

Laravel Eloquent(where 子句)

根据页面的最后修订日期设置 MediaWiki 内部链接的样式

使用 PHP 的 OAuth 2.0 MAC

WooCommerce单个产品页面上启用额外选项卡的产品元框字段

php/html OnSubmit 禁用输入类型提交未给出预期结果

使用来自 PHP 表单的数据更新 xml 命名空间

在 EasyAdmin 中添加全局操作,将我的按钮放在表格下方而不是上方