发送跨域HTTP Post与HTML表单



我有这个HTML表单,我需要在提交之前做一些处理:

<form action="http://appid.appspot.com/api/foo" id="contact-form" method="post"
name="contact-form">
    <fieldset>
        <label><input name="email" onblur=
        "if(this.value=='') this.value='Email'" onfocus=
        "if(this.value =='Email' ) this.value=''" value="Email"></label>
        <label><input name="subject" onblur=
        "if(this.value=='') this.value='Subject'" onfocus=
        "if(this.value =='Subject' ) this.value=''" value="Subject"></label> 
        <textarea name="message" onblur=
        "if(this.value=='') this.value='Message'" onfocus=
        "if(this.value =='Message' ) this.value=''">
Message
</textarea>
        <div class="buttons">
            <a href="#" onclick=
            "document.getElementById('contact-form').reset()">Clear</a>
            <a href="#" onclick=
            "document.getElementById('contact-form').submit()">Send</a>
        </div>
    </fieldset>
</form>
基本上,我需要做的是:
  • 当提交按钮被点击,一个弹出窗口将出现,表明消息已经提交(通过检查服务器响应)无论如何,

  • 我需要复制特定表单输入的值,例如输入元素的值。然后将电子邮件添加到实际的消息中,例如,表单"message"将是"Email: x@dot.com Message: Hello world" <—这将是在将表单字段发送到api

  • 之前具有name="message"的输入元素的值。

更新:

我的意思是,如果这样更好的话,我想将这个基于基本HTML表单的POST迁移到Ajax调用中,这样我就可以轻松实现上面概述的目标。

您想要使用表单的onsubmit

我改变了你的html(尤其是内联javascript)一点(为了清晰):

<form action="http://appid.appspot.com/api/foo" id="contact-form" method="post"
name="contact-form" onsubmit="return doStuff() ? true:false;">
    <fieldset>
        <input name="email" value="Email"
             onblur="if(this.value===''){this.value=this.defaultValue}" 
            onfocus="if(this.value===this.defaultValue){this.value=''}" > <br>
        <input name="subject" value="Subject"
             onblur="if(this.value===''){this.value=this.defaultValue}" 
            onfocus="if(this.value===this.defaultValue){this.value=''}" > <br>
        <textarea name="message" 
                onblur="if(this.value===''){this.value=this.defaultValue}" 
               onfocus="if(this.value===this.defaultValue){this.value=''}"
                      >Message</textarea>
        <div class="buttons">
            <a href="#" onclick=
            "document.getElementById('contact-form').reset()">Clear</a>
            <a href="#" onclick=
            "if(doStuff()){document.getElementById('contact-form').submit();}">Send</a>
        </div>
    </fieldset>
</form>

你可以看到输入元素上的自动填充/自动清除现在有点重复,所以你可以把它分解成一个单独的通用函数。

下面是在表单实际提交之前运行的javascript函数:

function doStuff(){
    var eml=document.getElementsByName('email')[0].value;
        msg=document.getElementsByName('message')[0];
    msg.value = 'Email: ' + eml + ' Message: ' + msg.value;
    alert ('message has been submitted');
    return true;
}

正在工作

如果另一个域使用会话cookie和/或检查文档引用,跨域执行此操作可能会变得棘手。

更新:我看到你更新了你的问题,现在想检查和显示你的消息中的服务器响应到?

相关内容

  • 没有找到相关文章

最新更新