为什么页面在调用JavaScript函数后会遇到NullPointerException?

为什么页面在调用JavaScript函数后会遇到NullPointerException?,javascript,jquery,html,ajax,Javascript,Jquery,Html,Ajax,我需要让用户点击一个链接,以显示一个灯箱,其中有一个表单,提交表单和重定向用户到一个新的页面 为了实现这一点,我定义了两个javascript函数,lightboxform函数用于显示lightbox,subform函数用于提交表单。问题在于,第二个javascript函数(子表单)将请求发送到后端,而不是重定向到索引页,并将其参数附加到源地址 假设我在以下地址: www.example.com/show?id=2 我点击链接显示lightbox,提交lightbox中的表单后,页面地址更改为

我需要让用户点击一个链接,以显示一个灯箱,其中有一个表单,提交表单和重定向用户到一个新的页面

为了实现这一点,我定义了两个javascript函数,lightboxform函数用于显示lightbox,subform函数用于提交表单。问题在于,第二个javascript函数(子表单)将请求发送到后端,而不是重定向到索引页,并将其参数附加到源地址

假设我在以下地址:

www.example.com/show?id=2
我点击链接显示lightbox,提交lightbox中的表单后,页面地址更改为以下地址:

www.example.com/show?p=3444&q=4555 << id parameter is replaced by p,q which are the parameters that I am trying to submit to backend
灯箱的形式

 <form id="form393" onsubmit="return subform()">
        <input id="p" name="p" type="text"/>
        <input id="q" name="q" type="text"/>
        <input type="submit" value="submit" />
 </form>

好吧,在不查看处理页面如何工作的情况下,以下是根据可用信息在黑暗中拍摄的一张照片

ajax请求的问题在于最终如何执行。在以下两行中:

xmlhttp.open("POST","../../lightbox/processForm?p="+p+"&q="+q,false);
xmlhttp.send();
您发出POST请求,但不向请求提供任何数据。对于POST请求,数据通过标题发送,而不是通过url发送。因此,必须将查询字符串附加到方法:

假设您的处理页面使用post数组,这应该可以工作

编辑:

关于你的更新,简单的
window.location
并不完全正确,尽管它也没有错。根据下面链接的文章,虽然窗口对象的
位置
对象是只读的,但它可以被分配一个字符串作为
href
的一种别名。考虑到这是您目前正在做的事情,而这对您不起作用,我建议改为
replace
。例如:

window.location.replace("http://www.example.com/"); //closest to http redirect
window.location.href = "http://www.example.com/"; //simulate user clicking link
我建议您查看更多信息,以及关于它的详细信息


向我们展示您的html。同时给出准确的错误消息。另外,您的URL根本不匹配。这个节目是从哪里来的?我看到processForm和myform,但没有myproducts,等等:如果你只是否决了一个问题,错误会一再发生,因为发布问题的人不知道他/她之前的问题出了什么问题。我只需要使用表单提交p和q参数,并将用户重定向到地址。我看到了问题;您在第二个ajax请求中使用POST,但在send中没有提供任何参数。使用POST时,必须向.send()方法提供查询字符串,而不是附加到url GET。我已经编辑了代码,但问题仍然存在。@AlexCartio1已更新。但请不要修改你的问题,使这个答案过时,使它解决的问题不再可见。请添加到其中,但不要删除原始问题。@Daedalus我从问题中得到的是,有两个javascript函数,一个用于显示lightbox,另一个用于将表单提交到后端并将用户重定向到索引页。我想这就是第二个函数没有重定向到指定地址的原因。@Daedalus不用担心,我只是假设这是因为lightbox没有重定向。如问题所示,iframe似乎并没有被使用。我试图重新表述这个问题,但不确定它是否对您可见。奇怪的是,第二个函数将其参数附加到源窗口地址。
xmlhttp.open("POST","../../lightbox/processForm",false);
xmlhttp.send("p="+p+"&q="+q);
window.location.replace("http://www.example.com/"); //closest to http redirect
window.location.href = "http://www.example.com/"; //simulate user clicking link