将页面内容从单独的页面获取到表单提交div而不重新加载当前页面

时间:2016-04-17 13:31:37

标签: javascript php jquery ajax submit

我正在尝试从另一个页面获取数据并将其响应和内容加载到我拥有表单的页面中的div中 - 无需重新加载表单页面。当我尝试使用此代码时,它会刷新页面并且不会获取结果。

当前的jquery代码,我有我的表单 - form.php:

<html>
<head>
<script type='text/javascript' src='http://code.jquery.com/jquery-latest.js'></script>
<script>
$('#skipreload').submit(function() { // catch the form's submit event
    $.ajax({ // create an AJAX call...
        data: $(this).serialize(), // get the form data
        type: $(this).attr('GET'), // GET or POST
        url: $(this).attr('dbresults.php'), // the file to call
        success: function(response) { // on success..
            $('#form_output').html(response); // update the DIV
        }
    });
    return false; // cancel original event to prevent form submitting
});
</script>
</head>
<body>

<form id="skipreload" method="GET" action="form.php">
<input type="text" name="id">
<input type="submit" value="Get results">
</form>

<div id="form_output">
<!--Show the result here from dbresults.php-->
</div>

</body>
</html>

我要从-dbresults.php获取结果的页面中的代码:

include("dbsettings.php");

$id = "";

if ($_GET)
{
$id = $_GET['id'];

    $sql = "SELECT Results FROM Table WHERE id = '$id';";
    $result = mysql_query($sql);

    while($row = mysql_fetch_array($result))
    {
        echo $row["Results"]";
    }
}

当我在form.php中提交表单时,页面会重新加载而不会将结果输入到getresults.php的div“#form_output”中 - 为什么它不起作用?

2 个答案:

答案 0 :(得分:0)

您的$.ajax电话中有一些错误。如果您想使用表单上当前的值,请仅使用.attr(),即使这样,您也需要按属性名称而不是属性进行选择。

将其更改为:

$.ajax({ // create an AJAX call...
    data: $(this).serialize(), // get the form data
    type: 'GET', // GET or POST
    url: 'dbresults.php', // the file to call
    success: function(response) { // on success..
        $('#form_output').html(response); // update the DIV
    }
});

您还可以使用$.get

完成相同的任务
$.get('dbresults.php', $(this).serialize(), function(response) {
    $('#form_output').html(response);
});

此外,您需要将代码包装在.ready()块中:

$(document).ready(function() { // alternatively $(function() {
    [...]
});

答案 1 :(得分:0)

没有属性GET,这是method的值,并且没有属性'dbresults.php'action属性的值。

此外,您的代码在表单存在之前被调用

尝试:

$(function(){ // wait until documented is ready so element exists

    $('#skipreload').submit(function() { // catch the form's submit event
        $.ajax({ // create an AJAX call...
            data: $(this).serialize(), // get the form data
            type: $(this).attr('method'), // GET or POST
            url: $(this).attr('action'), // the file to call
            success: function(response) { // on success..
                $('#form_output').html(response); // update the DIV
            }
        });
        return false; // cancel original event to prevent form submitting
    });

});