我正在尝试发送POST request via PHP from AJAX
。我用Postman
检查了API。一切正常。但是它并没有在PHP中执行。它也没有显示在“网络”选项卡中。
我看到了很多在Stack Overflow中发出POST请求的示例并进行了尝试。但是我不知道我要去哪里错了?
我在此处同时附有JS代码和PHP代码
JavaScript代码
function editUser(toid, name, mobile, mail, pin, addr, state, dis, subdis, role, user) {
$.ajax({
type: "POST",
url: "edituser.php",
dataType: 'html',
data: {
id: toid,
fullname: name,
phone: mobile,
email: mail,
address1: addr,
state: state,
district: dis,
subdistrict: subdis,
pincode: pin,
usertype: user,
role: role,
token: apptoken,
},
success: function (response) {
visibility(false);
console.log("Response > > " + response);
if (response.status == "SUCCESS") {
swal("Updated User", " Information Updated Successfully!", "success");
}
loadData();
}
});
}
PHP代码
<?php
// where are we posting to?
$url = 'http://api.tech.com/api/UpdateUser';
// what post fields?
$fields = array(
'id' => $_POST['id'],
'fullname' => $_POST['fullname'],
'phone' => $_POST['phone'],
'email' => $_POST['email'],
'address1' => $_POST['address1'],
'state' => $_POST['state'],
'district' => $_POST['district'],
'subdistrict' => $_POST['subdistrict'],
'pincode' => $_POST['pincode'],
'usertype' => $_POST['usertype'],
'role' => $_POST['role'],
);
// build the urlencoded data
$postvars = http_build_query($fields);
// open connection
$ch = curl_init();
$token = $_POST['token'];
// set the url, number of POST vars, POST data
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, count($fields));
curl_setopt($ch, CURLOPT_POSTFIELDS, $postvars);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("AppToken: $token",
"Content-Type: application/x-www-form-urlencoded"));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
// execute post
$result = curl_exec($ch);
echo $result;
// close connection
curl_close($ch);
?>
更新:
发送到API($ url)的请求未显示在“网络”选项卡中。但是显示了对edituser.php的请求。
答案 0 :(得分:0)
我觉得这里缺少很多上下文,但是我做了很多类似的事情,所以我会尽力帮助我理解。
到目前为止,这是我从你的问题中收集的信息。
这是我关于如何前进的想法。
您似乎正在从客户端JavaScript发送所有数据,包括安全的密码和令牌。这是一个非常糟糕的主意,因为这意味着您的用户都可以看到此安全密码,并出于自己的恶意目的窃取它。而是在php代码中存储诸如安全引脚之类的常量。
如果期望在网络选项卡中看到卷曲请求,则可能会误认为。 curl请求从一个服务器发送到另一个服务器,客户端将永远不会看到它。
如果“响应”选项卡为空,则可能会出现一些简单的错误,例如语法错误或某种卷发错误,而您没有捕获。
将其中一些添加到您的调试请求中:
$result = curl_exec($request);
$response_code = curl_getinfo($request, CURLINFO_HTTP_CODE);
echo 'Response code: ' . $response_code;
if(curl_error($request))
{
echo '<br />Curl error: ' . curl_error($request);
}
您应该至少在ajax调用的“响应”标签中看到响应代码。
如果仍然看不到任何内容,请确保将PHP configuration设置为显示所有警告和错误等,并且不隐瞒您所需的信息。