2011-11-15 189 views
0

有一个类似的问题,演示如何在jQuery中执行此操作。不幸的是,我使用的是原型,翻译代码并不是非常简单。如何提交表单并保留在同一页面

Submit form and stay on same page?

什么需要做的是价值(电子邮件)发布到页面上的子域和用户不重定向。我没有任何控制来编辑子域上的页面。

任何援助将不胜感激。

function submitEmailForm(){ 
     var userEmail = $('Text').value; 
     $('EmailForm').action = 'http://subDomain.myDomain.com/?email_address='+userEmail; 
     $('EmailForm').request({ onComplete: function(){ return false;} }); 
    } 

<form method="post" id="EmailForm" onsubmit="submitMobileEmailForm(); return false;"> 
      <input type="text" id="Text"/> 
      <input type="submit" id="Submit" value=""/> 
</form> 
+0

我相信这是最好的,如果我使用onSubmit为

而不是onClick为。仍在调试。 – SFox

+0

它看起来像你真正想要的是AJAX。你可以使用jQuery的那个http://api.jquery.com/jQuery.ajax/(这里有个叫做http://api.jquery.com/jQuery.post/的帖子) – Thor84no

+1

你不能使用xmlhttprequest(请参阅[本示例](http://www.w3schools.com/ajax/tryit.asp?filename=tryajax_first)) – puk

回答

1

您可以模拟与AJAX表单提交。

(注:我用了一个旧的项目我的工作作为一个模板,所以有些技术我以前可能是有点老了。例如,事件处理的工作方式有所不同。)

function ajaxFormSubmission(form) 
{ 
    xhrThingy = yourFunctionForObtainingXMLHttpRequestInstance();// XHR support is different for various browsers, so you might need to have browser specific code. 
    xhrThingy.onreadystatechange = eventHandlerHere; 
    xhrThingy.open('POST', 'theFileThatWillHandleYourRequest.php', true);// The used arguments are: HTTP request Method, request url, asynchronous flag 
    xhrThingy.setRequestHeader("Content-type", "application/x-www-form-urlencoded");// Simulating Form Submission 


    var emailData = form.elements['Text'].value;// Extracting needed data from form 
    var postData = "emailAddress=" + emailData; 
    xhrThingy.send(postData); 
} 

的eventHandlerHere功能然后可以检查回应。事情是这样的:

function eventHandlerHere() 
{ 
    if (xhrThingy.readyState==4 && xhrThingy.status==200) 
    { 
     var response = xhrThingy.responseText 
     // Do whatever you need to do with the email adress 
    } 
} 

在我工作的项目,我用快速原型嵌套方法,让你准确的实现将有所不同。例如,我引用xhrThingy,它仅在范围内,因为函数嵌套在ajaxFormSubmission函数中。

+0

谢谢RC。我实际上正在尝试使用原型,现在提到的Ajax方法。到目前为止,它看起来并不像预期的那样工作,因为我的请求将是跨域的。我仍然试图解决它。 – SFox

+1

跨域应该没关系。只要你格式化你的请求,以便服务器可以处理它,你不应该有一个问题发送一个AJAX请求。 – Matthew

+0

如果您需要访问的数据,您确实需要找到解决相同原产地政策的方法。我只试图回答“如何在不加载新页面的情况下提交表单”? 有一些方法可以规避相同的原产地策略,但您应该记住,该策略是为了抵御跨站点脚本攻击。 –

1

您需要通过JQuery点击按钮将其重定向到同一页面。

http://www.webdeveloper.com/forum/archive/index.php/t-105181.html

+0

他可能意味着没有页面刷新(AJAX),不错的尝试,虽然:) –

+0

我实际上可以与页面刷新。只要用户不会进入我要发送数据的页面,我很高兴。 =) – SFox

+0

这是一个怎样的答案?澄清吗? – Matthew

相关问题