首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用表单使用$_GET ()空form.submit和$_POST

使用表单使用$_GET ()空form.submit和$_POST
EN

Stack Overflow用户
提问于 2015-03-20 14:24:20
回答 1查看 767关注 0票数 2

我想在提交之前对连接进行测试。与那个解决方案不同,我使用的是非Jquery解决方案(因为我不想进入该语言,我认为没有必要加载库)。

代码可以很好地测试连接和发送或不发送表单。

问题似乎在于,在formTemp.submit()中使用xhr.onreadystatechange,发送表单时不需要输入。

以下是我所做的:

代码语言:javascript
运行
复制
//Test connection on form
var myForm = document.getElementsByTagName('form');
for (var i = 0 ; i <myForm.length; i++){
	(function(){
		var currentI = i;
		addEvent(myForm[currentI],'submit', function(e) {
			e = e || window.event; //In case IE
			e.preventDefault(); //Prevent the Form to be sent
			TestConnection_js(this);
		});
	})();
}

function addEvent(element, event, func){ 
	if (element.addEventListener){
		element.addEventListener(event, func, false);
	} else { //In case IE
		element.attachEvent('on'+event, func);
	}
}

var TestConnection_js = function (formTemp){
	var xhr = new XMLHttpRequest();
	xhr.open('GET', './index.php');
	xhr.onreadystatechange = function(){
		console.log(xhr.readyState+' - '+xhr.status);
		if (xhr.readyState == 4 && xhr.status == 200) {
			formTemp.submit(); //Here is my Submit (that submit nothing)
		} else {
			alert('Connection Error');
		}
	};
	xhr.send(null);
	return xhr;
}
代码语言:javascript
运行
复制
<!-- What's on page : here.php -->
<form action="aim.php" method="post">
  <input type="submit"  value="Aim" />
</form>

<!-- What's on page : aim.php -->
<?php print_r ($_GET);
      print_r ($_POST); ?>

我想它在aim.php上结束意味着成功测试,所以你能告诉我这里出了什么问题吗?

编辑:忘了表单上的method="post",但这不是问题所在。

EN

回答 1

Stack Overflow用户

发布于 2015-03-20 14:45:13

问题:

1. TestConnection_js函数发出GET请求,因此在print_r($_POST);中没有任何数据。

2. ajax请求是向index.php而不是aim.php (xhr.open('GET', './index.php');)提出的。

3. ajax请求没有发送数据,所以即使是print_r($_GET);也没有数据

4.如果您想发送 POST 请求,我假设您想要的是您想要的,您必须序列化表单并向aim.php文件发出POST请求。

解决方案:

1. --我建议您使用一个javascript框架(如jQuery),它执行您想要的大部分代码,并且代码是跨浏览器兼容的。看看jQuery ajax发布请求

另外,看看这个使用表单数据的jQuery POST请求示例

2.使用集成在浏览器中的开发工具。我最喜欢的工具是火狐的火虫。通过这种方式,您可以准确地看到浏览器正在发出的每个请求,以及正在发送/接收的数据。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29168820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档