使用jQuery Ajax传递数据?

时间:2013-01-06 16:23:43

标签: php jquery ajax

我有下面的html页面:

<!DOCTYPE html>
<html lang="en">
    <head>

        <title>HTML</title>

        <script src="http://code.jquery.com/jquery-latest.min.js"></script>

        <script>
            $(document).ready(function() {
                $("#b1").click(function(event) {
                    $.ajax({
                        type : "POST",
                        url : "index.php",
                        data : "valx=2",
                        contentType : "application/x-www-form-urlencoded",
                        dataType : "text",
                        complete : function() {
                            alert('post completed');
                        },
                        error : function() {
                            alert('error condition');
                        },
                        success : function(data) {
                            $('.result').html(data);
                            alert('data is returned');
                        },

                        statusCode : {
                            200 : function() {
                                alert("page was found");
                            }
                        }

                    });
                    event.preventDefault();
                });
            });
        </script>
    </head>

    <body>
        <div>
            <button id="b1">
                Click Me!
            </button>
        </div>
        <div class="result"></div>

    </body>
</html>

然后我有以下php页面:

<?php
     $my_string =  $_REQUEST["valx"]; 
     $my_string = $my_string +9;
     echo $my_string;
?>

一切都按原样完美运行,但我试图弄清楚如何将帖子数据更改为表格:

 data: '{ valx:"2"}'

这就是它破裂的地方。我尝试了很多形式的数据:'{valx:“2”}'但仍然没有运气。好像php脚本没有正确获取数据。另请注意,使用此格式似乎也需要更改contentType : "application/x-www-form-urlencoded",

所以问题是如何传递data: '{ valx:"2"}'形式的数据并获得11的响应?

谢谢, 吉姆

2 个答案:

答案 0 :(得分:3)

data参数接受带有键/值的var=value&var1=value1表单, JavaScript对象。你已经给了它,这是一个字符串......

data: '{ valx:"2"}`

...当你应该给它时,这是一个真正的JS对象:

data: { valx:"2"}

答案 1 :(得分:0)

使用对象而不是字符串。 jQuery会将对象解析为表单编码格式。还要完全删除contentType选项,因为这不是要发送的数据类型,而是收到的数据,您将收到text / html

 data : { valx:"2"},