0

我有下面的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 的响应?

谢谢,吉姆

4

2 回答 2

3

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

data: '{ valx:"2"}`

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

data: { valx:"2"}
于 2013-01-06T16:26:17.117 回答
0

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

 data : { valx:"2"},
于 2013-01-06T16:27:31.530 回答