我目前正在学习如何使用Ajax,但我已经遇到了问题:
1 HTML:
<body>
<form>
Nom d'utilisateur : <input type="text" id="username" name="username"/>
<input type="submit" id="submit" />
</form>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script src="script.js"></script>
JS:
$(document).ready(function(){
$("form").submit(function(e){
e.preventDefault();
var don=$('#username').val();
$.ajax({
url:'test.php',
type:'post',
data:don,
success: function(html){
alert(html);
}
});
});
});
PHP:
<?php
if(!empty($_POST['username'])){
$response="yep";
}
else{
$response="nope";
}
echo $response;
&GT;
正如您所看到的,它非常简单。但它让我发疯,我不明白为什么我总是有回应&#34; nope&#34;。 你能帮助我吗 ? 谢谢
答案 0 :(得分:2)
PHP要求您提交key=value
构造以正确构建$ _POST / $ _ GET。没有关键,没有价值。你还没有提供钥匙,只是一个价值。
尝试
data: {"username":don}
代替。或者让您的PHP脚本通过php://input
读取原始POST数据。
答案 1 :(得分:0)
您只是发送一个字符串。您需要发送一个JSON对象:
var don = {"username" : $('#username').val()};
jQuery会把它变成一个字符串并发送它(我假设,否则你需要JSON.stringify
它),然后你需要在服务器端调用json_decode
之前你查询它。
如果您想继续使用当前的服务器端代码,则需要使用GET
请求并提交至url: "test.php?username="+encodeURIComponent($('#username').val())
,然后检查PHP端的_GET
变量。