首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试使用链接单击ajax在后台打开php文件

问尝试使用链接单击ajax在后台打开php文件
EN

Stack Overflow用户
提问于 2016-11-13 04:01:15
回答 4查看 1.8K关注 0票数 3

我想打开一个php文件在后台点击一个链接,而不是显示的用户链接到php文件。

我意识到,唯一的方法是使用ajax。

但是它不起作用,它不是在后台打开新的php页面,而是什么都没有发生,php代码没有执行。

我的javascript

代码语言: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

代码语言:javascript
复制
<a id="run-php-script" href="#">clickit</a>

请注意,当我将php链接放入html href标记时,我的php脚本工作得很好。但问题是,它向用户显示了我的php文件url,我不希望用户看到它,也不希望它在新的选项卡中打开(如果可能的话),而是在后台打开。

我也尝试了GET而不是POST,但仍然无法工作。

请帮忙谢谢

更新--我已经将每个用户请求的更改为一个按钮。另外,我忘了把标签包装起来。但还是不起作用。

新js

代码语言:javascript
复制
<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

代码语言:javascript
复制
<input id="run-php-script" type="button" name="someBtn" value="clickit" />

当我点击按钮的时候,什么也不会发生。php页面不会在后台打开。

我在上面的脚本中添加了成功代码。但是,尽管它说“成功”弹出,但实际的php页面仍然没有在后台打开和执行,只是什么都没有发生。

请帮忙谢谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-11-13 06:30:36

尽管我无法让它与ajax一起工作,但我能够让它以另一种方式工作。我没有使用ajax,而是将链接/输入转换为一个按钮,并将其作为表单提交。我可以填充它,它可以工作!!现在,用户可以推断URL,但前提是他们知道自己在做什么。不再有任何完整的url,相反,url在某种程度上被混淆了,这样用户就无法像在链接时一样看到url。

这是我最后的工作代码。我对它进行了艰苦的测试,终于找到了解决方案!

(没有使用javascript或ajax,只是一个标准的表单元素)

html

代码语言:javascript
复制
<form action="http://mywebsiteaa.com/myfile.php" method="post">
    <button type="submit" name="addId" value="<?php echo $add->id); ?>">clickit</button>
</form>

这做了几件事。

  1. name= 这样做是在?之后添加名称值。因此,例如,通过将名称值addId添加到url:?addId=中
  2. value= 现在,对于值,这是一个变量,它决定要在末尾追加什么。因此,我获取了所需的值,并将php代码插入到value字段。

例如,假设这个页面的$add->id是999。这将导致在后面添加999,如:?addId=999。

  1. 您需要它是一个按钮,因为如果它是输入的,那么文本将是值的名称,所以它将不是按钮文本的"clickit“,而是"999",您不希望这样做,所以让它成为按钮而不是输入。

这个简单的解决方案的更好之处在于,它做了我想做的所有事情:

a)不打开任何新页。

b)它在后台运行php代码。

( c)用户看不到链接。是的,如果他们知道html编码,他们可以把链接放在一起,但大多数人不会知道,这是完美的使用我。

所以当我点击这个按钮时会发生什么:

)将字符串和值组合在一起,并将其连接到url。

( b)它在后台执行php文件,没有新页。

( c)用户永远无法看到完整的url

因此,在实践中,对于用户来说,这就是html的样子:

代码语言:javascript
复制
<form action="http://mywebsiteaa.com/myfile.php" method="post">
    <button type="submit" name="addId" value="999">clickit</button>
</form>

当用户单击按钮时,它会在后台打开这个php文件:

代码语言:javascript
复制
http://mywebsiteaa.com/myfile.php?addId=999

但是这个链接不会在任何新窗口中打开,它是在后台完成的,这样用户就不会看到完整的链接。

这使得用户体验非常棒。还有一定程度的隐私。

如果您的文件是关键的,这将不适用于您,因为用户仍然能够将名称和值放在一起,使字符串到url,但大多数用户不知道这一点,是过于复杂的大多数。但这是可能的,因此,如果数据是敏感的,那么您不应该使用此方法。相反,您甚至不应该首先打开一个php文件,而是应该以完全不同的方式通过服务器发送后台的所有内容。

但是,如果数据不是关键的,如果1/ 1,000,000用户中有1人想要把数据放在一起是可以的,那么这个按钮方法就可以做你想做的事情。

享受吧!

票数 0
EN

Stack Overflow用户

发布于 2016-11-13 04:06:37

对你来说有两件事出了问题:

  • 该链接有一个target="_blank"属性,因此单击它将在一个新选项卡中打开href,您应该删除它。
  • 事件处理程序不阻止链接的默认操作

如果不希望浏览器处理链接,则应该将preventDefault()调用添加到处理程序

例如:

代码语言:javascript
复制
$('a#run-php-script').click(function(e){
    e.preventDefault();
    ...
});
票数 1
EN

Stack Overflow用户

发布于 2016-11-13 06:47:04

使用Chrome devTools网络选项卡检查是否有任何表单数据被发送。

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

https://stackoverflow.com/questions/40570430

复制
相关文章

相似问题

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