我正在尝试使用http://support.capsulecrm.com/customer/portal/articles/1639817-website-contact-form-integration发布一个Capsule CRM页面,我可以很轻松地工作。但是,我想使用AJAX发布此消息,但一直遇到CORS错误。 Capsule CRM的人员已将其关闭,因此您无法在遇到此错误的情况下使用AJAX提交。
与他们联系后,我得到了以下答复:
在互联网上花费了很大一部分时间来寻找“AJAX代理”之后,我似乎找不到一个示例,并开始努力使其工作。希望一些代码可以解决我的问题。
form.html
<form id="contact-form" class="form">
<label>Name: </label>
<input type="text" name="PERSON_NAME" placeholder="Name" value="" required/>
<label>Email: </label>
<input type="email" name="EMAIL" placeholder="Email" value="" required /><br>
<label>Telephone: </label>
<input type="text" name="PHONE" placeholder="Telephone number" value="" required /><br>
<input type="submit" name="submit" value="Submit" />
</form>
<div class="result">
</div>
form.js
$(document).ready(function(){
$('.form').submit(function(event){
event.preventDefault();
var messages = $('#result');
var formData = $('.form').serialize();
$.ajax({
type : "POST",
url : capsule.php,
data : formData
})
.done(function(response) {
console.log("Success: " + response);
}
})
.error(function(response) {
console.log("Error: " + response);
}
});
});
capsule.php
<?php
<form action="https://service.capsulecrm.com/service/newlead" method="post">
<input type="hidden" name="FORM_ID" value="XXXXXXXXXXXXXXXXXXXXXXXX">
<input type="text" name="FIRST_NAME" value="$_POST['PERSON_NAME']">
<input type="text" name="LAST_NAME" value="$_POST['PERSON_NAME']">
<input type="text" name="EMAIL" value="$_POST['PERSON_NAME']">
</form>
?>
我几乎需要做一个双重职位。我需要将数据发布到Capsule.php,然后再发布。如果该响应成功,则将其全部撤消并更新form.html而不刷新。还是有人知道我应该如何形成“AJAX代理”?
这是我第一次深入研究AJAX,所以请轻柔:)。
编辑
在尝试了以下答案并进行调试之后,我将其返回到开发人员工具的控制台中。由于我无权访问Capsules CRM服务器,因此调试起来很困难,因此我目前还向他们发送有关我遇到的问题的电子邮件:
(
[url] => https://service.capsulecrm.com/service/newlead
[content_type] =>
[http_code] => 404
[header_size] => 315
[request_size] => 206
[filetime] => -1
[ssl_verify_result] => 0
[redirect_count] => 0
[total_time] => 0.397695
[namelookup_time] => 0.045858
[connect_time] => 0.109964
[pretransfer_time] => 0.268374
[size_upload] => 705
[size_download] => 0
[speed_download] => 0
[speed_upload] => 1772
[download_content_length] => 0
[upload_content_length] => 705
[starttransfer_time] => 0.333441
[redirect_time] => 0
)
谢谢大家的耐心配合!
最佳答案
您误解了AJAX代理概念。capsule.php
脚本不应包含HTML格式,它应从form.html
接收AJAX请求数据,并通过POST请求将其发送/传递到Capsule CRM页面。这可以通过多种方式完成:CURL,file_get_contents()
和其他方式。
下面是CURL的实现:
$ch = curl_init();
curl_setopt_array($ch, array(
CURLOPT_URL => 'https://service.capsulecrm.com/service/newlead',
CURLOPT_NOBODY => false,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $_POST,
CURLOPT_SSL_VERIFYPEER => false,
));
$response = curl_exec($ch);
if ($response && curl_getinfo($ch, CURLINFO_HTTP_CODE) == 200)
return $response;
header($_SERVER['SERVER_PROTOCOL'].' 404 Not Found');