我有一个奇怪的问题时,张贴联系表格。
加载图标将继续加载,并且表单不会提交。
电子邮件被发送,我的before_send_mail函数也起作用。奇怪的是,当我取消注解before_send_mail函数时,它没有显示任何错误。所以可能是我的代码。
但是,frontpage没有改变状态,并且一直显示加载图标。
错误消息为:
<div class="ajax-error">Unexpected token < in JSON at position 0</div>
你们能帮帮我吗下面你会发现before_send函数。
add_action( 'wpcf7_before_send_mail', 'form_to_crm' );
function form_to_crm( $cf7 ) {
$wpcf7 = WPCF7_ContactForm::get_current();
/* Uw naam => first_name */ $first_name = $_POST["your-name"];
/* Bedrijf => company_name */ $company = $_POST["bedrijf"];
/* Email => email */ $email = $_POST["email"];
/* Adres => address */ $address = $_POST["adres"];
/* Nummer* => number */ $number = $_POST["huisnummer"];
/* Postcode => postcode */ $postcode = $_POST["postcode"];
/* Woonplts* => city */ $city = $_POST["woonplaats"];
/* Tel => telephone */ $telephone = $_POST["telefoonnummer"];
if(!empty( $first_name )){ $post_items['first_name'] = $first_name; }
if(!empty( $company )){ $post_items['company_name'] = $company; }
if(!empty( $email )){ $post_items['email'] = $email; }
if(!empty( $address )){ $post_items['address'] = $address; }
if(!empty( $number )){ $post_items['number'] = $number; }
if(!empty( $postcode )){ $post_items['postcode'] = $postcode; }
if(!empty( $city )){ $post_items['city'] = $city; }
if(!empty( $telephone )){ $post_items['telephone'] = $telephone; }
if(!empty($postcode) && !empty($number))
{
$ch = curl_init();
if ( curl_error($ch) != "" )
{
return;
}
$post_string = json_encode($post_items);
$con_url = 'valid api url';
curl_setopt($ch, CURLOPT_URL, $con_url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
"Content-Type: application/json",
"Authorization: Token XXX (censored)"
));
curl_setopt( $ch, CURLOPT_POSTFIELDS, $post_string);
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
$output = curl_exec($ch);
file_put_contents("curlerror.txt", $output);
curl_close($ch);
}
return $output;
}
3条答案
按热度按时间rfbsl7qr1#
在浏览器控制台中, AJAX 调用未被列为错误。但是,调用中出现错误。谢谢@JAAulde给我指出来。
kzmpq1sx2#
@森塔的回答帮我找到了出错的原因。事实证明,CF 7的 AJAX 调用所接收的响应不仅仅是来自CF 7的JSON响应,而是另一个插件正在向其中添加内容,导致AJAX失败,因为它期望的是JSON格式,现在是可怕的无效(本来只有1行JSON的内容变成了300多行其他内容)。
我不喜欢编辑插件,但我这样做是为了帮助解决这个问题,并允许CF 7与其他人一起玩得很好,现在看起来像这样:
contact-form-7/includes/js/scripts.js或者,如果您正在使用Contact Form 7的jQuery验证插件,则需要jquery-validation-for-contact-form-7/js/jquery.jvcf7_validation.js
我不宽恕编辑其他开发人员的插件,这可能不适用于每个有这个问题的人。这只是一个临时的修复,直到我们找到一个不同的插件,将发挥良好的CF 7。
编辑:
今天,我又犯了这个错误。事实证明,在wp-config.php设置中将WP_DEBUG设置为false也可以解决这个错误,因为 AJAX 响应中的内容是一堆调试日志。如果您正在调试它,这会很有帮助,但除此之外,我建议您在生产环境中不要使用它。
63lcw9qa3#
在我的情况下,我不得不重新配置/重新安装“隐藏我的WP”插件,一切都很好。