这是一个完整的示例。只需将粘贴复制到三个名为:
whateveryouwant.php
another_php_file.php(要更改名称,您还必须更改 ajax 代码(2 个位置)
contacts.xml
这个怎么运作:
第一个 ajax 代码块在 DOM 准备好后立即运行(注意:没有事件触发它,它只是运行。第二个代码块由点击事件触发)。ajax 将此 POST 发送到名为another_php_file.php的 PHP 文件: req=load
。这是一个 key=>value 关联数组:“req”是 var 名称,“load”是它的值。
现在,看看another_php_file.php内部发生了什么。启动时,该文件会检查它收到的 POST 变量。如果$_POST['req'] == 'load'
然后它从磁盘读取文件并回显它。这就是 AJAX 的工作原理:从指定的 PHP 处理器文件回显的任何内容都会在该 AJAX 代码块的success:
函数中接收。
xml 文本如何进入 textarea 控件?再看看第一个 AJAX 代码块。还记得从 PHP 处理器文件回显的数据是在成功函数内部接收的吗?这是魔术:
success: function(result) {
$('textarea').val(result);
}
result
是一个变量(可以任意命名),包含 PHP 文件回显的内容。然后我们使用 jQuery 粘贴result
到 textarea 控件中。
请注意,我没有为该 textarea 控件指定 ID。此代码假定您的页面上只有一个。如果您有多个,那么您将通过其 ID 引用所需的 textarea 控件:
$('#myText').val(result);
的HTML:
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$.ajax({
type: 'POST',
url: 'another_php_file.php',
data: 'req=load',
success: function(result) {
//alert(result);
$('textarea').val(result);
}
});
$('#mybutt').click(function() {
var stuff = $('textarea').val();
alert(stuff);
$.ajax({
type: 'POST',
url: 'another_php_file.php',
data: 'req=save&changes=' +stuff,
success: function(result) {
alert(result);
//$('textarea').val(result);
}
});
});
}); //END $(document).ready()
</script>
</head>
<html>
<body>
<input type="button" value="Save Changes" id="mybutt" />
<textarea id='myText' rows="30" cols="120" value='<?php echo $xml; ?>' />
</body>
</html>
another_php_file.php
<?php
//This necessary to prevent AJAX from automatically ESCAPING all values (e.g. "Bob" is turned into \"Bob\" )
//See http://stackoverflow.com/questions/4550036/jquery-is-automatically-escaping-ajax
if (get_magic_quotes_gpc()) {
$process = array(&$_GET, &$_POST, &$_COOKIE, &$_REQUEST);
while (list($key, $val) = each($process)) {
foreach ($val as $k => $v) {
unset($process[$key][$k]);
if (is_array($v)) {
$process[$key][stripslashes($k)] = $v;
$process[] = &$process[$key][stripslashes($k)];
} else {
$process[$key][stripslashes($k)] = stripslashes($v);
}
}
}
unset($process);
}
if ($_POST['req'] == 'load') {
$xml = file_get_contents("contacts.xml");
echo $xml;
}else if ($_POST['req'] == 'save') {
$d = $_POST['changes'];
//echo $d;
$size = file_put_contents('contacts.xml', $d);
echo 'Wrote ' .$size. ' bytes to file. Refresh page with [Ctrl]+[F5] to see your changes.';
}
联系人.xml
<?xml version="1.0"?>
<phonebooks>
<contacts group_name="Dimple" editable="1" id="0">
<contact first_name="Extension" last_name="1000" contact_type="sip">
<numbers>
<number dial="1620" dial_prefix="" label="Extension" primary="1">
</numbers>
</contact>
<contact first_name="George" last_name="Smith" contact_type="sip">
<numbers>
<number dial="1700" dial_prefix="" label="Extension" primary="1">
</numbers>
</contact>
</phonebooks>