将JSON放在变量中

时间:2014-01-24 14:17:08

标签: javascript jquery json

我很难用$ .ajax()。我有这个HTML页面:

<html>
    <head>
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
        <script type="text/javascript" src="script.js"></script>
    </head>
    <body>
        <form name="gettr" id="gettr">
         <input type="hidden" name="lang" value="ro">
         <input type="text" name="tickkey" id="tickkey" value="">
         <br>
         <input type="submit" value="Send" id="submit">
         <input type="reset" value="Cancel" onclick="$(&quot;#hereinfo&quot;).html(&quot;&quot;);">
        </form>
    </body>
</html>

脚本:

$("#gettr").submit(function() {

    var url = "handler.php"; 

    $.ajax({
           type: "GET",
           url: url,
           dataType: "application/json",
           data: $("#gettr").serialize(), // serializes the form's elements.
           success: function(data) {
               alert('Done');
           }
         });

    return false; 
});

我现在正在本地运行脚本,我的问题是脚本没有做任何事情。当我点击发送按钮时,它只是在地址栏的url末尾添加了?lang=ro&tickkey=value_inputed_in_the_form。我应该怎么做才能将服务器返回的JSON存储在变量中?

谢谢!

3 个答案:

答案 0 :(得分:7)

我认为您的查询变量附加到url的原因是因为您在DOM加载之前执行了脚本。您应该将脚本包装在$(document).ready(function () { });处理程序中。

使用event.preventDefault()代替return false;。但为什么不return false;here

$(document).ready(function () { //Let the DOM be loaded

   $("#gettr").submit(function(event) {
    event.preventDefault(); //Prevent window default behaviour

    var url = "handler.php"; 

    $.ajax({
           type: "GET",
           url: url,
           dataType: "application/json",
           data: $("#gettr").serialize(), // serializes the form's elements.
           success: function(data) {
               alert(data);               //Alert your json data from server
           }
         });
    });
    //remember remove return false; because you're already preventing default behaviour
});

答案 1 :(得分:4)

确保DOM已准备好并在执行AJAX请求之前阻止表单提交。

var dataFromServer = {};

// Document ready.
$(function() {

    $( '#gettr' ).on( 'submit', function( event ) {

        // Prevent form submission.
        event.preventDefault();            

        // AJAX request.
        var url = 'handler.php'; 
        $.ajax({
           type: 'GET',
           url: url,
           dataType: 'application/json',
           data: $( '#gettr' ).serialize(),
           success: function( data ) {               
                dataFromServer  = data;
           }
        });
    });

});

答案 2 :(得分:4)

尝试调用preventDefault();

$("#gettr").submit(function(event) {
    event.preventDefault();