php - 尝试使用 AJAX 和 cURL 提交表单
问题描述
我正在尝试通过 cURL 提交表单,POST 方法似乎工作正常。我唯一的问题是没有提交表单。该呼叫来自该home.php
站点,用于填写另一个站点上的新闻通讯表格。样式是通过 Bootstrap 完成的。
卷曲命令:
if(!empty($_POST['p-firstname'])){
$post_data['name'] = $_POST['p-firstname'];
}
if(!empty($_POST['p-lastname'])){
$post_data['lastname'] = $_POST['p-lastname'];
}
if(!empty($_POST['p-email'])){
$post_data['email'] = $_POST['p-email'];
}
if(!empty($_POST['submit1'])){
$post_data['submit'] = $_POST['submit1'];
}
if(!empty($_POST['p-firstname']) && (!empty($_POST['p-lastname'])) && (!empty($_POST['p-email'])) && (!empty($_POST['submit1']))){
foreach ( $post_data as $key => $value)
{
$post_items[] = $key . '=' . $value;
}
$post_string = implode ('&', $post_items);
$curl_connection = curl_init('http://www.xx.xxxx-xxxxx.com/xxxxx/contents/mail/register.php');
curl_setopt($curl_connection, CURLOPT_CONNECTTIMEOUT, 1000);
curl_setopt($curl_connection, CURLOPT_TIMEOUT, 0);
curl_setopt($curl_connection, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
curl_setopt($curl_connection, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl_connection, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl_connection, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl_connection, CURLOPT_POST, 1);
curl_setopt($curl_connection, CURLOPT_POSTFIELDS, $post_string);
$result = curl_exec($curl_connection);
error_log($post_string);
print_r(curl_getinfo($curl_connection));
echo curl_errno($curl_connection) . '-' .
curl_error($curl_connection);
curl_close($curl_connection);
}
<form action="register.php" method="post">
<?php if ($error) { ?>
<div class="error">There was an error subscribing you to the newsletter.</div>
<?php } ?>
<div class="form-group">
<label for="name">Your first name</label>
<input type="name" class="form-control<?php check('name')?>" name="name" id="name" placeholder="Max" value="<?= htmlentities($fields['name']); ?>">
<div class="invalid-feedback">
Please provide a proper first name.
</div>
</div>
<div class="form-group">
<label for="name">Your last name</label>
<input type="name" class="form-control<?php check('lastname')?>" name="lastname" id="lastname" placeholder="Mustermann" value="<?= htmlentities($fields['lastname']); ?>">
<div class="invalid-feedback">
Please provide a proper last name.
</div>
</div>
<div class="form-group">
<label for="email">Email address</label>
<input type="email" class="form-control<?php check('email')?>" name="email" id="email" placeholder="xxx@xxxxx.com" value="<?= htmlentities($fields['email']); ?>">
<div class="invalid-feedback">
Please provide a proper email-address.
</div>
</div>
<button name="submit" value ="submit" type="submit" class="btn btn-primary">Submit</button>
</form>
我将 POST-String 记录为:name=test&lastname=test&email=xxxx.xxxx@xxxx.com&submit=submit
谢谢你的帮助
解决方案
对于遇到类似问题的任何人,进行另一个 Ajax 调用是最好的解决方案。我的 register.php 中包含的文件有问题,这就是调用时间过长和超时的原因。
$.ajax({
type: "POST",
async: false,
cache: false,
url: "https://www.xxx.xxx/xxxx/contents/mail/register.php",
data: { firstname:name, lastname:lastname, email:email},
});
实际上知道如何通过浏览器工具调试 XHR 请求是非常有帮助的。
推荐阅读
- javascript - 子组件不会重新渲染,但父组件会重新渲染。如何让子组件重新渲染?
- reactjs - 如何从源映射和压缩包生成生产 Webpack 构建中的可读堆栈跟踪?代码拆分包中是否包含源映射?
- python - 将 Chromedriver 与 Google 图片一起使用 下载
- javascript - 从 Nodejs http get 请求传递数据
- html - 你能用 HTML 表格模仿 div 的浮动右侧吗?
- python - 如何在 Python 中使用 Soundfile 将具有指定 SNR 的高斯噪声添加到音频文件中?
- r - 具有多个条件的 data.table ifelse 未返回所需的输出
- r - 后续行动:从 R 中的 data.frames 列表中提取?
- mysql - 在嵌套选择子查询中使用别名
- typescript - Typescript - 在用户登录之前使类属性不可用