0

我在网站上有一个表单字段(电子邮件注册),电子邮件提供商希望我将其提交到他们的 REST Web 服务并获得回复。在如此挣扎之前,我从未使用过 JSON 或 AJAX!

的HTML:

<form>
  <input type="hidden" name="gid" value="12345678">
  <input type="hidden" name="user.CustomAttribute.NewsletterPopUp" value="Global">
  <input type="hidden" name="user.CustomAttribute.NewsletterOptIn" value="True">" value="True">
  <input type="text" name="uemail" class="email_input_field" value="please enter your email" size="30" maxlength="64" onFocus="clearText(this)">
  <input type="submit" name="signup" value="signup" class="email_submit_button">
</form>

目前,使用 Javascript 并使用 window.location 访问 URL(创建操作而不是发布操作),他们希望将其转换为带有 XML 响应的表单发布操作。现在会发生什么:

$(".email_submit_button").click(function(){
    var uemail = $('.email_input_field').val();
    window.location = "http://example.com/automated/action.jsp?action=register&errorPage=/automated/action.jsp&gid=12345678&uemail="+uemail+"&user.CustomAttribute.NewsletterPopUp=Global&user.CustomAttribute.NewsletterOptIn=True";
    return false;
  }
});
4

2 回答 2

1

我看到您正在使用 jQuery,因此您可以使用 $.post 像这样发布到服务器:

var url = "http://example.com/automated/action.jsp"
var data ={
    "gid": form.gid,
    "action": register,
    "uemail": form.uemail,
    "errorPage": "/automated/action.jsp",
    "user.CustomAttribute.NewsletterOptIn": user.CustomAttribute.NewsletterOptIn,
    "user.CustomAttribute.NewsletterPopUp": user.CustomAttribute.NewsletterPopUp
};
var success_func = function(data){
    //do what you want with the returned data
};
$.post(url, data, success_func);

$.post 的文档
或者您可以使用 $.post 文档中提到的纯较长 Ajax 版本。
编辑:
我忘记了您不能对需要使用 JSONP 的其他域执行 xhttpresuext,这是另一个SO 帖子的链接,详细解释了所有内容
希望这有帮助。

于 2013-03-18T16:21:20.793 回答
0
$(".email_submit_button").submit(function(e) {
                // stop form from submitting
                e.preventDefault();
                // Grab all values 
                var uemail = $('.email_input_field').val();
                // make a POST ajax call 
                $.ajax({
                    type: "POST",
                    url: "YOUR URL", // set your URL here
                    data: { 
                    uemail: uemail // send along this data (can add more data separated by comma)
                },
                beforeSend: function ( xhr ) {
                // maybe tell the user that the request is being processed
                    $("#status").show().html("<img src='images/preloader.gif' width='32' height='32' alt='processing...'>");
                }
                }).done(function( response ) {
                    // do something with the received data/response
                    //$("#status").html(response);
                });
            });

不确定“.email_submit_button”是否是提交按钮或表单的类..您需要使用表单的id或类而不是提交按钮..希望这会有所帮助

于 2013-03-18T16:28:22.213 回答