我有一个<textarea>
在一个页面的中间,这是CSS样式。下面有一个输入框。我希望用户输入从第二个框被发送到同一个文件使用ajax,然后一些逻辑在文件的顶部采取输入和回一些东西到<textarea>
,不返回任何其他。目前正在发生的事情是文本区域正在被页面的HTML填充。有人帮助吗?
如果您希望文本区域中的文本被输入框中的文本追加,则
- 将文本从html代码中独立出来
- 使用php从文件中加载初始文本到文本区(
file_get_contents
) - 使用ajax将文本从输入框发送到一个脚本,该脚本可以更新文本文件,并在追加 后返回文件文本。
- 使用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语句。
欢呼。