AJAX - 我的简单ajax请求不起作用

时间:2015-04-20 21:57:00

标签: javascript php jquery ajax

我目前正在学习如何使用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;。 你能帮助我吗 ? 谢谢

2 个答案:

答案 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变量。