如何使用ajax .post()读取包含节的文件

时间:2013-07-19 01:28:28

标签: jquery ajax

我有一个文本文件,“abc.txt”,我想通过jQuery .post()调用来阅读。该文件有三个部分:section1,section2和section3。我想在jQuery中做一些聪明的事情,让我分别拉出section1,section2和section3文本。我的第一个想法是修改文件以标记xml类型括号的部分,如

<section1>The section 1 text</section1>
<section2>The section 2 text</section2>
<section3>The section 3 text</section3>

然后post()调用可能类似于

fileName = "abc.txt"

$.post('loadPage.php', {fileName : fileName},function(xml) {
        var sect1= $(xml).find("section1");
    },
    "xml");  // dataType

但这在几个层面失败了。首先,最后的“xml”数据类型似乎使post()不起作用。我想我的小xml标签并没有欺骗ajax认为它是xml数据。其次,如果我省略了dataType,我会收回东西,但是$(xml).find(“section1”);爆炸了。

我有什么地方可以在这​​里工作吗?

loadPage.php如下所示:

<?php
$siteName       = $_POST['siteName'];
$fileName = "{$siteName}_sav.html";
$fileSize = filesize($fileName);
$filePath =  $_SERVER['DOCUMENT_ROOT'] . "/" . $fileName;
echo ("<br /> reading $fileSize bytes from $filePath");
$site_fp = fopen( $filePath, 'r');
$xml = fread($site_fp, $fileSize);
if($xml) {
    echo ("<br />xml: " . htmlspecialchars($xml));
}
else {
    echo ("<br />Read from $fileName failed");
}

&GT;

它实际上是一个html文件,而不是txt文件,如果这有任何区别。

由于

1 个答案:

答案 0 :(得分:0)

从适当的XML开始

<?xml version="1.0" encoding="ISO-8859-1"?> // or whatever
<section1>The section 1 text</section1>
<section2>The section 2 text</section2>
<section2>The section 3 text</section3>

并且因为它们是根元素,您应该使用filter()而不是find(),但最好的选择可能是将xml附加到另一个元素,因此它可以以任何方式工作:

fileName = "abc.txt"

$.post('loadPage.php', {fileName : fileName}, function(xml) {
    var sect1 = $('<div />').append(xml).find("section1");
}, "xml");