当我点击提交按钮时,会有一个ajax帖子请求。但是返回的json值只有“”。 <.p>启动.done()ajax时,甚至console.log(数据)也无法正常工作。
<form id="form" action="#">
<input type="email" placeholder="email" id="account_name" name="account_name" value="email@test.com"> <br>
<input type="text" placeholder="First Name" id="first_name" name="first_name" value="volvo"><br>
<input type="text" placeholder="Last Name" id="last_name" name="last_name" value="volva"><br>
<input type="submit" name="submit" id="btn"/>
</form>
<script type="text/javascript">
$(function(){
var btn = $("#btn");
var form = $("#form");
var accName =$("#account_name").val();
form.on("submit",function(evt){
evt.preventDefault();
var myReq = $.ajax({
method:"POST",
url:"create.php",
dataType: 'json',
data: "account_name="+accName
});
myReq.done(createAcct);
});
function createAcct(data){
console.log(data);
var a = JSON.parse(data);
console.log(typeof a);
}
});
</script>
所以返回的json是响应选项卡中的这个{“ac”:“”}数组。 这是我的php curl
$ca = createAcct($_REQUEST['account_name']);
$data = ["ca"=>"$ca"];//should be the email
print json_encode($data);
echo $data;
function createAcct($email_account){
$data = '{"account_name":"'.$email_account.'"}';
$ch = curl_init();
//Set cURL parameters to perform API Call
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_URL, "https://api.website.com/api/accounts/create");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERPWD, API_USER.':'.API_PASS);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
$statusCode = curl_getinfo($ch,CURLINFO_HTTP_CODE);
$output = curl_exec($ch);
$err = curl_error($ch);
if ($statusCode == 204) {
return $email_account;
curl_close($ch);
} else {
curl_close($ch);
}
}
答案 0 :(得分:0)
首先你要改变
print json_encode($data);
echo $data;
要
echo json_encode($data);
比使用像这样的ajax直接获得响应的更好方法
$.ajax({
method:"POST",
url:"call.php",
dataType: 'json',
data: "account_name="+accName
}).done(function(data) {
createAcct(data);
});
现在,在 createAcct 功能中,您可以获得回复
function createAcct(data){
console.log("f");
console.log(data);
console.log(data['ca']);
console.log(typeof data);
}
您还可以使用ajax成功替换已完成的功能
success : function(data) {
createAcct(data);
}
答案 1 :(得分:0)
通过'Content-Length:'。 strlen($ data))