1

我试图从 jQuery 触发的 GET 请求中返回一个 HTML 表单,但我不确定如何去做。客户的服务器会调用我的服务器,然后我会返回一个表单。我了解相同的域策略会起作用,并且有一些方法可以解决它,例如 JSONP,但我不知道如何返回整个 HTML 表单。

现在我正在本地主机上进行测试,所以我可以使用 GET 到我服务器上的另一个页面,而不必担心相同的域策略,如果这有助于简化事情

这是我的思考过程。

//form_deliver.php
//this code would go on the customer's server which would then call to mine
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" ></script>
<?php
    echo "look at all of this stuff!";
?>
<script> 
    $.getJSON("/form_deliverer.php?form_request=true",function(data) {
            //alert(data.check); //this was just for testing, 
    });
</script>

这是它将 GET 请求发送到的页面

//form_deliverer.php
//this code is on my server which will return a form to the customer
<?
if(isset($_GET['form_request'])){
   // echo json_encode(array("check" => "true")); //just for testing
    //return form here
?>

为简单起见,假设这是我要返回的形式是

<form method="post">
    <input type="textbox" name="text"/>
    <input type="submit" name="submit_text"/>
</form>

根据jackJoe的建议编辑这是我的更新

form_deliver.php 上的代码

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" ></script>
<?php
    echo "look at all of this stuff";
?>
<script> 
    var form_request = "true";
    $.get("/form_deliverer.php", {var: form_request},
        function(data){
        $("#yourdiv").html(data);
    }, "html");
</script>
<div id = "yourdiv">

</div>

这是在 form_deliverer.php

<?
if(isset($_GET['form_request'])){
    return "
    <form method='post'>
        <input type='textbox' name='text'/>
        <input type='submit' name='submit_text'/>
    </form>
    ";
}

?>
4

2 回答 2

3

正如我在评论中所说,您可以使用AJAXor 在您的情况下GEThttp://api.jquery.com/jQuery.get/),它允许您返回 html。

例子:

$.get("yourPHP.php", {var: somethingdynamicpassedviajavascript},
     function(data){
     //get the result
     $("#yourdiv").html(data);
}, "html");

此函数的结尾具有返回类型(在本例中为“html”)。此示例将 HTML 放入 div#yourdiv

于 2013-06-16T19:03:35.033 回答
1

如果您最终将使用 JSONP,则必须将表单标记设置为字符串,该字符串应该是服务器响应的 json 编码对象的属性值。

因此,您的服务器将不得不回显如下内容:

<?php
$o = new stdClass();
$o->formHTML = '<form>...</form>';
echo json_encode($o);
?>
于 2013-06-16T19:17:36.770 回答