使用jquery解析安全条目XML文件

时间:2011-01-12 17:49:26

标签: jquery xml json

道歉,如果这是基本的。我主要是前端设计师/开发人员。

我通过名为wufoo的表单服务进行webform。

Wufoo生成一个可以被抓取和解析的可爱XML(或json)文件。

我正在尝试获取与表单关联的条目xml提要并通过jquery解析它以显示谁已输入。

我使用以下代码(使用本地xml文件)。

http://bostonwebsitemakeover.com/2/test.html

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js"></script> 
<script> 
$(document).ready(function () {
    $.ajax({
        type: "GET",
        url: "people.xml",
        dataType: "xml",
        success: xmlParser
    });
});




function xmlParser(xml) {

    $('#load').fadeOut();

    $(xml).find("Entry").each(function () {

        $(".main").append('<div class="entry">' + $(this).find("Field1").text() + ' ' + $(this).find("Field2").text() + ' http://twitter.com/' + $(this).find("Field17").text() + '</div>');
        $(".entry").fadeIn(1000);

    });



}
</script> 

我的XML文件包含以下内容:

<?xml version="1.0"?>
<Entries>
    <Entry>
        <EntryId>1</EntryId>
        <Field1>Meaghan</Field1>
        <Field2>Severson</Field2>
        <Field17/>
    </Entry>
    <Entry>
        <EntryId>2</EntryId>
        <Field1>Michael</Field1>
        <Field2>Flint</Field2>
        <Field17>michaelflint</Field17>
    </Entry>
    <Entry>
        <EntryId>3</EntryId>
        <Field1>Niki</Field1>
        <Field2>Brown</Field2>
        <Field17>nikibrown</Field17>
    </Entry>
    <Entry>
        <EntryId>4</EntryId>
        <Field1>Niki</Field1>
        <Field2>Brown</Field2>
        <Field17>nikibrown</Field17>
    </Entry>
</Entries>

我想知道如何使用wufoo上托管的xml文件(即https)执行此操作

所以我想我问我如何通过jquery验证feed?或者我需要通过json做到这一点?有人可以解释一下吗?

2 个答案:

答案 0 :(得分:1)

问题是same-origin policy。这是一个由所有浏览器强制执行的规则,您不能使用XMLHTTPRequest(AJAX的基础)跨域。如果它使用不同的端口或协议(例如,http / https),您可能不会向另一台服务器或同一服务器发出请求。

最合理的解决方案是在Web服务器上设置代理应用程序XML文件的脚本。例如,在PHP中,它可以像下面这样简单:

<?php
header('Content-Type: application/xml');
echo file_get_contents('the wufoo url');
?>

然后,您可以使用AJAX调用该文件并接收远程文件的内容。

答案 1 :(得分:0)

jQuery允许将用户名和密码传递给ajax调用:

$(document).ready(function () {
$.ajax({
    type: "GET",
    url: "people.xml",
    dataType: "xml",
    success: xmlParser,
    username: "myUsername"
    password: "myPassword"
});
});

但是,这会在js中以纯文本形式显示用户名和密码。您可能需要考虑设置一个小的PHP代理来进行经过身份验证的调用,以便您的所有凭据都只在服务器上。