PHP Ajax发布结果不起作用

时间:2015-01-22 07:10:27

标签: php jquery ajax post

我正在尝试使用某个表单,但是当我用ajax调用ti时,它将无效。

// ---------------------------- EDIT ---------------- ------------

我实际上在浏览时确实找到了我想要的东西。

jQuery Ajax POST example with PHP

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

post.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);

然后在index.php中通过以下方式调用它:

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

// ---------------------------- v-OR​​IGINAL-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>

post.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));

1 个答案:

答案 0 :(得分:0)

更改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;
    });