我想打开一个php文件在后台点击一个链接,而不是显示的用户链接到php文件。
我意识到,唯一的方法是使用ajax。
但是它不起作用,它不是在后台打开新的php页面,而是什么都没有发生,php代码没有执行。
我的javascript
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<script type="text/javascript">
$('a#run-php-script').click(function(e){
e.preventDefault();
$.ajax({
type: 'POST',
url: 'http://mywebsiteaa.com/myfile.php?addId=<?php echo $add->id); ?>'
});
return false;
});
</script>我的html
<a id="run-php-script" href="#">clickit</a>请注意,当我将php链接放入html href标记时,我的php脚本工作得很好。但问题是,它向用户显示了我的php文件url,我不希望用户看到它,也不希望它在新的选项卡中打开(如果可能的话),而是在后台打开。
我也尝试了GET而不是POST,但仍然无法工作。
请帮忙谢谢
更新--我已经将每个用户请求的更改为一个按钮。另外,我忘了把标签包装起来。但还是不起作用。
新js
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#run-php-script').click(function(){
$.ajax({
type: 'POST',
url: 'http://mywebsiteaa.com/myfile.php?addId=<?php echo $add->id); ?>',
success: function(){
alert('success');
},
error: function(){
alert('failure');
}
});
return false;
});
});
</script>新html
<input id="run-php-script" type="button" name="someBtn" value="clickit" />当我点击按钮的时候,什么也不会发生。php页面不会在后台打开。
我在上面的脚本中添加了成功代码。但是,尽管它说“成功”弹出,但实际的php页面仍然没有在后台打开和执行,只是什么都没有发生。
请帮忙谢谢
发布于 2016-11-13 06:30:36
尽管我无法让它与ajax一起工作,但我能够让它以另一种方式工作。我没有使用ajax,而是将链接/输入转换为一个按钮,并将其作为表单提交。我可以填充它,它可以工作!!现在,用户可以推断URL,但前提是他们知道自己在做什么。不再有任何完整的url,相反,url在某种程度上被混淆了,这样用户就无法像在链接时一样看到url。
这是我最后的工作代码。我对它进行了艰苦的测试,终于找到了解决方案!
(没有使用javascript或ajax,只是一个标准的表单元素)
html
<form action="http://mywebsiteaa.com/myfile.php" method="post">
<button type="submit" name="addId" value="<?php echo $add->id); ?>">clickit</button>
</form>这做了几件事。
name=
这样做是在?之后添加名称值。因此,例如,通过将名称值addId添加到url:?addId=中value=
现在,对于值,这是一个变量,它决定要在末尾追加什么。因此,我获取了所需的值,并将php代码插入到value字段。例如,假设这个页面的$add->id是999。这将导致在后面添加999,如:?addId=999。
clickit“,而是"999",您不希望这样做,所以让它成为按钮而不是输入。这个简单的解决方案的更好之处在于,它做了我想做的所有事情:
a)不打开任何新页。
b)它在后台运行php代码。
( c)用户看不到链接。是的,如果他们知道html编码,他们可以把链接放在一起,但大多数人不会知道,这是完美的使用我。
所以当我点击这个按钮时会发生什么:
)将字符串和值组合在一起,并将其连接到url。
( b)它在后台执行php文件,没有新页。
( c)用户永远无法看到完整的url
因此,在实践中,对于用户来说,这就是html的样子:
<form action="http://mywebsiteaa.com/myfile.php" method="post">
<button type="submit" name="addId" value="999">clickit</button>
</form>当用户单击按钮时,它会在后台打开这个php文件:
http://mywebsiteaa.com/myfile.php?addId=999但是这个链接不会在任何新窗口中打开,它是在后台完成的,这样用户就不会看到完整的链接。
这使得用户体验非常棒。还有一定程度的隐私。
如果您的文件是关键的,这将不适用于您,因为用户仍然能够将名称和值放在一起,使字符串到url,但大多数用户不知道这一点,是过于复杂的大多数。但这是可能的,因此,如果数据是敏感的,那么您不应该使用此方法。相反,您甚至不应该首先打开一个php文件,而是应该以完全不同的方式通过服务器发送后台的所有内容。
但是,如果数据不是关键的,如果1/ 1,000,000用户中有1人想要把数据放在一起是可以的,那么这个按钮方法就可以做你想做的事情。
享受吧!
发布于 2016-11-13 04:06:37
对你来说有两件事出了问题:
target="_blank"属性,因此单击它将在一个新选项卡中打开href,您应该删除它。如果不希望浏览器处理链接,则应该将preventDefault()调用添加到处理程序
例如:
$('a#run-php-script').click(function(e){
e.preventDefault();
...
});发布于 2016-11-13 06:47:04
使用Chrome devTools网络选项卡检查是否有任何表单数据被发送。
https://stackoverflow.com/questions/40570430
复制相似问题