从Ajax传递变量到PHP不起作用

时间:2014-11-22 16:03:04

标签: javascript php jquery ajax

我有这样的代码

<form>
        <input type="text" value="" name="someval">
        <button id="ajax-button">ajaxButton</button>
    </form>

    <script>
        $(document).ready(function(){
            $('#ajax-button').click(function(e){
            e.preventDefault();
                $.ajax({
                  type: "GET",
                  url: "action.php",
                  data: { text : $('input[name=someval]').val() },
                  dataType: "text",
                  success: function (data){
                    alert(data);
                  }
                });         

            });
        });
    </script>

现在我尝试在php中回显Ajax返回的值。

我试试

echo json_encode($text);
echo $text; 
echo $_GET['text'];

Al错了。

如何在PHP中获取它。 感谢

2 个答案:

答案 0 :(得分:2)

设置表单的属性以获得语义正确的html

<form action="action.php" id="someForm" method="POST">
    <input type="text" value="" name="someval">
    <select id="someSelect">
        <option value="some_1">some 1</option>
        <option value="some_2">some 2</option>
        <option value="some_3">some 3</option>
    </select>
    <button id="ajax-button">Send</button>
</form>

您的脚本

<script>
    $(function(){

        var form = $("#someForm"),
            select = $("#someSelect"),
            url, formData;

        form.submit(function(event){
            event.preventDefault();

            url = form.attr("action");
            formData = form.serializeArray();

            $.post(url, data, function(response){
                console.log($.parseJSON(response));
            });
        });

        select.change(function(){

           url = form.attr("action");
           formData = form.serializeArray();

           $.post(url, data, function(response){
                console.log($.parseJSON(response));
            });                   
        });

    });
</script>

您的php文件(表单的action属性中的文件集路径)。

<?php

    var_dump($_POST);

?>

答案 1 :(得分:0)

请改用data: 'text=' + $('input[name=someval]').val() ,。在PHP中,您可以使用echo $_GET['text'];直接访问它,而无需对json进行编码。

否则json的语法是data: { "text" : $('input[name=someval]').val() },