查询调用同一php页面异步时使用AJAX的方法


Query about methods to use AJAX when calling same php page asynch

我有一个<textarea>在一个页面的中间,这是CSS样式。下面有一个输入框。我希望用户输入从第二个框被发送到同一个文件使用ajax,然后一些逻辑在文件的顶部采取输入和回一些东西到<textarea>,不返回任何其他。目前正在发生的事情是文本区域正在被页面的HTML填充。有人帮助吗?

如果您希望文本区域中的文本被输入框中的文本追加,则

  1. 将文本从html代码中独立出来
  2. 使用php从文件中加载初始文本到文本区(file_get_contents)
  3. 使用ajax将文本从输入框发送到一个脚本,该脚本可以更新文本文件,并在追加
  4. 后返回文件文本。
  5. 使用javascript将textareas的值设置为ajax调用

如果您的页面和AJAX处理程序是同一件事,那么您需要一些东西来区分这两种"模式",以便页面正常运行。

在AJAX请求的情况下,您希望返回(输出)特定的内容,而不是页面源代码。这里有一个简单的方法:

<?php
if (isset($_POST['input'])) { //<-- replace with the name of your input
    die("response to go in textarea here");
}
?>

die命令终止输出,可选地使用给定的字符串(AJAX响应),因此页面的其余HTML也不会输出。

最好将页面和AJAX处理程序作为单独的文件。因此,您不必要地加载了比每个AJAX请求所需的更大的文件,因为它包含不需要的HTML。

查看本文:http://davidwalsh.name/detect-ajax

您可以在文件顶部检查请求是否为AJAX。

/* AJAX check  */
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
    /* special ajax here */
    die($content);
}

使用一些变量来定义脚本需要执行的操作。对脚本的AJAX调用可能不会回显页面的所有html,而只是回显文本区域的一些文本。

试试这样写:

<?php
if ($_GET['action'] == 'text') {
    echo 'Some text for the textarea';
} else {
    //regular page load
}
?>
$.ajax({
    'type': 'GET',
    'url': '/thisScript.php',
    'data': 'action=text',
    'success':function(data) { $('textarea').val(data); },
});

你可以在每个脚本中使用许多不同的switch语句。

欢呼。