【问题标题】:Parsing secure entries XML file with jquery使用 jquery 解析安全条目 XML 文件
【发布时间】:2011-01-12 17:49:26
【问题描述】:

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

我通过名为 wufoo 的表单服务获得了网络表单。

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(即 https)上的 xml 文件来执行此操作

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

【问题讨论】:

  • 您的代码似乎没有任何问题... wufoo 是什么?这似乎是问题所在,而不是您的 xml 或 jquery ...(这会使您发布的代码无关紧要)。

标签: jquery xml json


【解决方案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 调用该文件并接收远程文件的内容。

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2014-03-01
      • 1970-01-01
      • 2012-08-25
      • 1970-01-01
      • 2012-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-09
      相关资源
      最近更新 更多