调用PHP函数而不刷新

时间:2014-07-28 03:40:18

标签: javascript php jquery

我需要为我的网站刷新我的userprofile编辑页面。

我的用户建议添加“演示预览”,以便他们了解结果如何。

我使用了这个textarea

<textarea name="presentation">This is my presentation [b]with BBCodes[/b]</textarea>

上面我有#preview,我希望它更新,因为我在textarea中更改了某些内容,而bbCodes通过这个PHP命令“bbCode($ x)”“转换”为HTML“

基本上,我想用实际文本字段上方的转换版本显示输入textarea“live”的内容

我怎么能做到这一点?

4 个答案:

答案 0 :(得分:0)

您需要使用Ajax。我认为这必须帮助您解决问题 按照

上的ajax教程

http://www.tutorialspoint.com/ajax

http://www.w3schools.com/ajax/default.ASP

答案 1 :(得分:0)

您将使用Ajax。

  1. 将textarea发布到您希望加载其他页面的位置(数据库或平面文件)。
  2. 让其他页面运行一个等待几秒钟的javascript循环,然后通过ajax加载文件的内容,然后将其显示在您想要的区域。

    使用jquery

  3. 并不太难

    http://api.jquery.com/load/

答案 2 :(得分:0)

我不同意下面的答案。如果您进行AJAX调用,它应该一次,它应该为您提供要执行的转换的定义列表。实际的转换应该在客户端完成,否则你最终会在每次按键时向服务器发送请求!

以下是您如何做到这一点的示例:

// The array of regex patterns to look for
$format_search =  [
    /\[b\](.*?)\[\/b\]/ig,
    /\[i\](.*?)\[\/i\]/ig,
    /\[u\](.*?)\[\/u\]/ig
]; // note: NO comma after the last entry

// The matching array of strings to replace matches with
$format_replace = [
    '<strong>$1</strong>',
    '<em>$1</em>',
    '<span style="text-decoration: underline;">$1</span>'
];

$('textarea').on('keyup', function() {
    var preview = $(this).val().trim();
    // Perform the actual conversion
    for (var i = 0; i < $format_search.length; i++) {
        preview = preview.replace($format_search[i], $format_replace[i]);
    }
    // show the preview in your div
    $('#preview').html(preview);

});

Here's a demo fiddle。替换代码使用this answer.

我的建议是,如果您要使用AJAX,请使用它从数据源获取$format_search$format_replace的定义,而不是使用它来解析替换。

答案 3 :(得分:0)

试试这段代码:

<!DOCTYPE html>
<html>
<head>
<script src="jquery.js"></script>
<script>
function myFunction(x)
{
    var text = x.value;
    $('#preview').show();
    document.getElementById('preview').innerHTML=text;
}
</script>
</head>
<body>
<div id="preview" style="display:none"></div>
<textarea name="presentation" onkeyup="myFunction(this)"></textarea>

</body>
<style>
    #preview{
    width:200px;
    height:auto;
    border:1px solid black;
}
</style>

希望这是你问题的答案。