2010-09-28 52 views
1

我最近将HTML网站“转换”为Web表单。通过转换,我的意思是我在Visual Studio 2010中打开了该网站,添加了一个web.config文件以允许HttpPost协议,并将其转换。但是,我的表单不想发布到我的.aspx页面。我错过了什么?当我构建应用程序,也没有创建部署到我的本地IIS(7.5在Windows 7)的二进制

<form name="register2" method="post" action="#" onsubmit="return false;"> 

然后我的$。员额是我的$(函数(){...

$('form[name="register2"]').submit(function() { 
    var $registerForm2 = $('form[name="register2"]'); 
    if ($registerForm2.valid()) { 
     $.post({ 
      type: 'POST', 
      url: 'CreateAccount.aspx', 
      data: $(this).serialize() 
     }); 
    } else { //do validation 
     $registerForm2.validate(); 
    } 
}); 

当我提交表单,Chrome就会告诉我的请求URL是URL:http://localhost/mysite/[object%20Object]和接收错误代码404页CreateAccount.aspx确实存在。

回答

4

我现在看到问题了。 $.post()方法不支持将选项对象作为参数。

documentation

$.post('ajax/test.html', function(data) { 
    $('.result').html(data); 
}); 

因此改变你的代码:

$.post('CreateAccount.aspx', $(this).serialize()); 

,并给一个尝试。

+0

你赢了,我得到了我的预期。哇噢! – 2010-09-28 19:45:37

0

你需要改变你的页面扩展为.aspx所以ASP .NET运行时会处理它,你还需要<%@ Page %>指令位于页面顶部以指示页面应该被编译。

此外,您需要将runat="server"添加到您的FORM标签。

尝试将新的WebForm页面添加到项目中,以查看默认情况下如何设置,并验证该项目是否有效。

+0

我添加了页面指令并重命名为.aspx'<%@ Page Language =“C#”AutoEventWireup =“true”%>'。这个页面是一个facebox弹出窗口吗?我在表单中添加了'runat =“server”'属性,它有两个不同的地方:*不*渲染名称属性,* *渲染ID为'ctl100'。我添加了一个id属性,并改变了'submit'函数以通过id来识别窗体,但它似乎发布相同。页面指​​令有问题吗? – 2010-09-28 15:37:17

+0

没错。 ASP.NET为你自动生成ID,这在使用jQuery时会导致一些痛苦。我尝试使用类来识别DOM元素。这似乎是由于某种原因,jQuery使用错误的URL来提交请求。我会放一个按钮的形式,它唯一的作用是调用'$ .post()'代码,并序列化表单而不是'this'。这可能会告诉我们什么。 – 2010-09-28 16:03:33

+0

没有这样的按钮或专门调用.post与它运气。 Facebox div的标记位于与“父”文件不同的文件中。父级是'index.html',现在子级页面是'reg.aspx'。你认为重要吗? – 2010-09-28 16:29:13

相关问题