【问题标题】:How to display something from one page to another using jQuery?如何使用 jQuery 从一个页面显示到另一个页面?
【发布时间】:2010-09-10 21:42:57
【问题描述】:

这是我目前的代码:

HTML:

<form>
    <label>First Name</label> <input type="text" class="first" /><br />
    <label>Last Name</label> <input type="text" class="last" /><br />
    <label>Age</label> <input type="text" class="age" /><br />
    <input type="button" class="submit" value="Submit" />
</form>

PHP:

$first = mysql_real_escape_string($_POST['first']);
$last = mysql_real_escape_string($last = $_POST['last']);
$age = mysql_real_escape_string($_POST['age']);

$query = mysql_query( "INSERT INTO people(first, last, age) VALUES ('$first', '$last', '$age')" );

if ($query) {
    echo "Success: $first $last has been entered";
} else {
    echo "FAIL!!!";
}

jQuery:

$('.submit').click(function() {

    var first = $('.first').val();
    var last = $('.last').val();
    var age = $('.age').val();

    var dataString = 'first=' + first + '&last=' + last + '&age=' + age;

    $.ajax({
        type: 'post',
        url: 'practise_process.php',
        data: dataString,
        success: function() {
            alert('success');
        }, error: function() {
            alert('error');
        }
    });

});

现在我可以使用上面的代码通过 ajax 函数将表单输入输入到数据库中,而无需刷新页面。但是如何从 PHP 脚本(practice_process.php)显示到表单页面?

这部分:

if ($query) {
    echo "Success: $first $last has been entered";
} else {
    echo "FAIL!!!";
}

编辑

我对我的 PHP 文件进行了此更改:

if ($query) {
    $message = "Success: $first $last has been entered";
} else {
    $message = "FAIL!!!";
}


echo "

<script type='text/javascript'>
var foo = $message;
</script>

";

并将我的表单页面上ajax函数的成功改成这样:

    success: function() {
        alert(foo);
    }

但是在 PHP 文件中设置的 var foo 在表单文件中没有被识别。

【问题讨论】:

    标签: jquery


    【解决方案1】:

    首先,您需要做一些额外的事情来防止页面重新加载。这是通过从单击事件处理函数返回 false 来完成的。

    $('.submit').click(function() {
        $.ajax({
            ... blah blah blah ...
        });
    
        return false; // this stops page refresh by preventing further event processing
    });
    

    接下来,让您的成功函数接收响应参数,以查看从服务器返回的内容。示例:

    $.ajax({
        type: 'post',
        url: 'practise_process.php',
        data: dataString,
        success: function(response) {
            alert('Received this from server: ' + response);
        }, error: function() {
            alert('error');
        }
    
    });
    

    有关成功函数的所有详细信息,请参阅 $.ajax 上的 jQuery 文档:http://api.jquery.com/jQuery.ajax/

    【讨论】:

    • 您好,我尝试在php文件中定义一个JavaScript变量,并尝试在表单页面的成功功能警报中调用它,但没有成功。看起来在一页上定义的变量在另一页上无法识别。请查看我的编辑。
    • 嗨 Sammy,撤消您的编辑 :) 我忽略了这样一个事实,即您可能会根据当前代码刷新页面。我更新了我的答案以添加return false; 以尝试防止刷新。现在尝试将响应参数添加到成功函数并警告它,它应该显示您试图从 PHP 脚本发回的内容。希望这会有所帮助。
    【解决方案2】:
    <?php
    //other code here.....
    
    if ($query) {
        $message = "Success: $first $last has been entered";
    } else {
        $message = "FAIL!!!";
    }
    
    echo $message;
    <?
    
    //in jQuery function...
    
    
    $.ajax({
            type: 'post',
            url: 'practise_process.php',
            data: dataString,
            success: function(foo) {
                alert(foo);
            }, error: function() {
                alert(foo);
            }
        });
    

    如果您将 'foo' 设为函数参数,它将接收从 PHP 文件中回显的任何内容。然后,您可以使用 JS 向用户 alert() 或显示它。此外,如果您将 mysqli 用于您的 db 连接,您可以回显 mysqli_error($dbLink); 以提醒 SQL 错误(如果有)。 JS 变量必须在客户端设置,但它可以由服务器端的 PHP 提供。

    【讨论】:

    • 好的,所以我现在所做的唯一更改是在函数括号中添加 foo,就像您在 ajax 中显示的那样 - 我在“编辑”部分中的所有其他代码都是相同的。现在我实际上从 PHP 脚本中得到了反馈。唯一的问题是,我在警告框中得到了这个消息,而不是只得到消息:&lt;script type='text/javascript'&gt; var foo = Success: John Doe has been entered; &lt;/script&gt; 我如何只得到没有 javascript 标记的消息并且 var foo 等于部分。
    • 您是否从您的 PHP 文件中删除了这个:&lt;script type='text/javascript'&gt; var foo = $message; &lt;/script&gt;?看起来您仍在尝试从 PHP 文件中回显 Js 代码,而不仅仅是 $message
    猜你喜欢
    • 2018-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多