我正在构建Firefox OS应用程序的一部分,我不得不使用OpenBadges API,这意味着我不能使用更多的PHP,这会使这更加简单。
我现在遇到的问题是我的数据是从AJAX POST请求发送的:
$(function(){
$("#submitBtn").click(function(){
var mail = $('#mail').val();
$.ajax({
type: 'POST',
contentType: 'text',
dataType: 'JSON',
url: 'scripts/test.php',
data: {
mail: mail
},
success: function(data){
var jdata = jQuery.parseJSON(data);
alert("success! X: " + data);
}
});
});
});
...我的PHP脚本没有收到:
<?php
if(isset($_POST['mail']))
{
$id_url = 'http://backpack.openbadges.org/displayer/convert/email';
$mail = $_POST['mail'];
$email = 'email='.$mail;
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $id_url);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $email);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec ($curl);
curl_close ($curl);
$user_id = json_decode($result)->userId;
$test_var = json_decode($result);
echo $result;
//echo $test_var;
//echo $user_id;
}
//echo $mail;
?>
我一直在Chrome开发工具网络标签中的PHP脚本上获得“已取消”状态,我可以看到它以“example%40gmail.com”而不是“@”的形式发送输入,但是我不确定这是否是问题的一部分。
我一直在寻找和调整我的代码大约两天试图弄清楚问题,但没有一个对其他人有用的修复工作对我有效。
提前致谢。
答案 0 :(得分:2)
你被取消&#34;取消&#34;因为您点击的链接正在与您的ajax调用同时执行,反过来取消它。您需要做的是使用preventDefault()
来阻止点击取消您的请求。
$(function(){
$("#submitBtn").click(function(e){
e.preventDefault(); // don't cancel the request
var mail = $('#mail').val();
$.ajax({
type: 'POST',
contentType: 'text',
dataType: 'JSON',
url: 'scripts/test.php',
data: {
mail: mail
},
success: function(data){
var jdata = jQuery.parseJSON(data);
alert("success! X: " + data);
}
});
});
});