我正在写一个表单,用户可以在其中发送信息,并附上一个文件,该文件通过电子邮件发送给某些用户。
我已经构建了一个HTML表单,因为我不想刷新页面,而是通过隐藏的iframe发送它。
一切正常,直到我将验证码添加到我的表单中。现在我遇到了问题。我在主窗体页面的会话中存储了生成的验证码字符串。但由于表单是从iframe发送的,我认为PHP正在创建一个新的会话,这是空的。
有人可以建议我如何将iframe和我的表单页面连接到同一会话?我想提一下,当用户点击发送表单时,iframe是由JavaScript动态创建的。
感谢您的建议!
修改 我的代码 HTML表单页面:
<input type="text" name="name"/><br />
<input type="text" name="email"/><br />
<textarea name="message"></textarea><br />
<input type="file" name="file"/><img id="captchaimg" src="http://xxx/mailsend.php?application=xxx&image=get"/><input type="text" name="captcha"/>
<input type="button" id="send" value="send"/>
我的JS档案:
function sendFromIframe() {
if ($('#hiddeniframe').length == 0) {
var iframe = ('<iframe name="hiddeniframe" id="hiddeniframe" src="" border="0" height="0" width="0" style="display:none"></iframe>');
$("body").append(iframe);
}
setTimeout(function() {
var form = $('#feedback');
form.attr('target', 'hiddeniframe');
form.attr('method', 'POST');
form.attr('action', 'http://xxx/mailsend.php');
form.attr("enctype", "multipart/form-data");
form.attr("encoding", "multipart/form-data");
form.submit();
wait4refresh();
}, 550);
}
function wait4refresh(counter){
var counter = counter || 0;
var bolean = false;
var request = $.ajax({
async: false,
url: 'http://xxx/mailsend.php',
type: 'GET',
data: 'application=' + $('input[name="application"]').val() + '&issend'
});
request.done(function(msg){
if (msg == 'true'){
bolean = true;
}
});
if (bolean){
refreshCaptcha();
}
else if (counter > 10){
return false;
}
else{
setTimeout(function(){
counter++
wait4refresh(counter);
},500);
}
}
function refreshCaptcha() {
var application = $('input[name="application"]').val();
d = Math.round(Math.random() * 100);
$('#captchaimg').attr('src', 'http://xxx/mailsend.php?application=' + application + '&image=get' + '&' + d);
}
和PHP文件:
当我在这里尝试添加我的PHP代码时,我收到错误“通过对等方重置连接”。我该怎么办?
答案 0 :(得分:0)
难道你不能只创建一个<div id='htmlform'> </div>
并使用jquery使其可见/不可见吗?