PHP Ajax 发布结果不起作用


PHP Ajax post result not working

我正在尝试让表单工作,但是当我用ajax调用ti时,它不起作用。

//----------------------------编辑----------------------------

实际上,我在浏览时找到了我正在寻找的东西。

jQuery Ajax POST 示例与 PHP

我只有一个问题,这是获取数据的最佳方式,还是我可以以某种方式从数组中调用它?

后.php

$errors = array(); //Store errors
$form_data = array();
$query = @unserialize(file_get_contents('http://ip-api.com/php/'.$_POST['name'])); //Get data
if (!empty($errors)) {
    $form_data['success'] = false;
    $form_data['errors']  = $errors;
} else {
    $form_data['success'] = true;
    $form_data['country'] = $query['country'];//Have a bunch of these to get the data.
    $form_data['city'] = $query['city'];//Or is there an easier way with an array?
    $form_data['zip'] = $query['zip'];
    // Etc, etc
}
echo json_encode($form_data);

然后在索引中.php只需通过以下方式调用它:

$('.success').fadeIn(100).append(data.whatever-i-have-in-post);

----------------------------v-ORIGINAL-v----------------------------

这是我到目前为止所拥有的。在底部,您可以看到我有一个if语句来检查我是否可以从帖子中获取结果,但它总是导致"无法获得国家"(我正在与 google.com 一起检查)。我不知道我做得对不对。有什么想法吗?

<script type="text/javascript" src="//code.jquery.com/jquery-1.11.1.min.js"></script>
<script type="text/javascript" >
    $(function() {
        $(".submit").click(function() {
            var name = $("#name").val();
            var dataString = 'name=' + name;
            if (name == '') {
                $('.error').fadeOut(200).show();
            } else {
                $.ajax({
                    type: "POST",
                    url: "post.php",
                    data: dataString
                });
            }
            return false;
        });
    });
</script>
<form id="form" method="post" name="form" style="text-align: center;">
    <input id="name" name="name" type="text">
    <input class="submit" type="submit" value="Submit">
    <span class="error" style="display:none">Input Empty</span>
    <?php
    include_once('post.php');
    if($query && $query['status'] == 'success') {
        $query['country'];
    } else {
        echo 'Unable to get country';
    }
    ?>
</form>

后.php

$ip = $_POST['name'];
//$ip = isset($_POST['name']); // I dont know if this makes a difference
$query = @unserialize(file_get_contents('http://ip-api.com/php/'.$ip));

更改dataString = {name: name}后尝试使用它

$(".submit").click(function() {
        var name = $("#name").val();
        var dataString = {name: name};
        if (name == '') {
            $('.error').fadeOut(200).show();
        } else {
            $.ajax({
                type: "POST",
                url: "post.php",
                data: dataString, 
                success: function(response) {
                   // Grab response from post.php
                }
            });
        }
        return false;
    });

我喜欢从 ajax 请求中获取JSON数据的最佳方式。您可以通过对脚本进行轻微更改来做到这一点。

PHP 文件

$query = @unserialize(file_get_contents('http://ip-api.com/php/'.$ip));
echo json_encode(array('status'=>true, 'result'=>$query)); // convert in JSON Data

$(".submit").click(function() {
        var name = $("#name").val();
        var dataString = {name: name};
        if (name == '') {
            $('.error').fadeOut(200).show();
        } else {
            $.ajax({
                type: "POST",
                url: "post.php",
                data: dataString, 
                dataType: 'json', // Define DataType
                success: function(response) {
                   if( response.status === true ) {
                      // Grab Country
                      // response.data.country 
                      // And disply anywhere with JQuery
                   }
                }
            });
        }
        return false;
    });