获取表单结果页面

时间:2013-01-07 02:56:44

标签: javascript html xml forms get

我正在寻找一种方法来了解如何将GET表单结果页面定位到div。 到目前为止,大多数解决方案都告诉我使用Iframe,但我的目的是对结果页面进行一些更改,并使用Iframe似乎激活跨域脚本编写规则,阻止我获取页面内容。

结果页面通常是原始XML。

<html>
<head>
<link rel="stylesheet" href="css/smoothness/jquery-ui-1.9.2.custom.css" >
<script src="js/jquery-1.8.3.js"></script>
<script src="js/jquery-ui-1.9.2.custom.js"></script>
<script src="js/jquery.xslt.js"></script>
<script type="text/javascript">

$(function() {
    var xmlContent = $("#CFrame").contents().find("*").text();

    $('#SResult').xslt({xml:xmlContent, xslUrl:'stylesheet/styleSheet.xsl'});
});

// prepare the form when the DOM is ready 
function submitForm() { 
    // bind form using ajaxForm 
    $('#searchForm').ajaxForm({ 
        // dataType identifies the expected content type of the server response 
        dataType:  'xml', 
        // success identifies the function to invoke when the server response 
        // has been received 
        success:   processXml
    });
    return false; 
}

function processXml(responseXML) { 
    // 'responseXML' is the XML document returned by the server; we use 
    // jQuery to extract the content of the message node from the XML doc 
    var message = $(responseXML).text(); 
    $("#SResult").text(message); 
}
</head>
<body>
   <form id="searchForm" method="GET" action="http://111.11.111.11:1111/search" onSubmit="submitForm()">
     <!--.... Some input go here-->
    <input type="submit" value="Search" />
<div id="SResult">
</div>
<iframe id="CFrame" name="ContentFrame" frameborder="1" height="1000px" width="1000px" scrolling="no"></iframe>
</body>
<script>
loadUI();
</script>
</html> 

谢谢,

3 个答案:

答案 0 :(得分:0)

您是否使用get方法提交表单,然后响应将显示在div标签上?

你可以使用Jquery ajax。

实施例

$.ajax({
   type: "POST",
   url: "url here",
   data: {id: someIdTobePass},
   success: function(response){
      //do the jquery manipulation
      $("#myDivID").html("the response is " + response);
   }
});

答案 1 :(得分:0)

您可以在jQuery中使用 $。get 辅助方法。

jQuery API

  

jQuery.get(url [,data] [,success(data,textStatus,jqXHR)] [,   dataType]);

代码示例

$.get("test.php", { name: "John", time: "2pm" },function(data){
   $("#mydiv").html(data);
});

答案 2 :(得分:0)

除非您使用jsonp,服务器代理或您可以控制其他域,否则您无法向其他域发出get或post请求。如果您可以控制正在进行ajax调用的域,则可以向您尝试请求的页面添加Access-Control-Allow-Origin响应标头,这样就可以访问您的域。

由于您正在执行返回XML的GET请求,因此我建议使用使用YQL作为代理的this jQuery plugin。此外,您可以使用this guide查看其工作原理或在没有插件的情况下执行此操作。

解决此问题的已解决的stackoverflow问题:Cross-Domain Requests with jQuery