【问题标题】:asp.net load server side url but don't open page or windowasp.net 加载服务器端 url 但不打开页面或窗口
【发布时间】:2015-11-23 22:21:41
【问题描述】:

我正在尝试从服务器端加载 URL,并且该 url 是一个发送 SMS 的 API。

我的问题是我需要加载 url,但触发时不应打开页面或任何窗口。

string url = "http://xxxxx.xxxxx.com/api/sendmsg.php?user=xxxx&pass=xxxx&sender=xxx&phone=xxxxxxxxxxx&text=this%20is%20test%20sms&priority=ndnd&stype=normal";
string s = "window.open('" + url + "', 'popup_window', 'width=300,height=100,left=100,top=100,resizable=yes');";
ClientScript.RegisterStartupScript(this.GetType(), "script", s, true);

【问题讨论】:

  • 不确定它是如何设置的。但是请阅读有关 Ajax 的信息。它可能会有所帮助。这里有一些examples

标签: javascript c# asp.net


【解决方案1】:

好吧,你可以从客户端发送一个 ajax GET 请求,虽然我不明白你为什么不从服务器端调用这个 URL。

这将是服务器端:

using(WebClient client = new WebClient ())
{
    string url = "http://xxxxx.xxxxx.com/api/sendmsg.php?user=xxxx&pass=xxxx&sender=xxx&phone=xxxxxxxxxxx&text=this%20is%20test%20sms&priority=ndnd&stype=normal";
    client.DownloadString(url);
}

如果你选择在客户端做,你可以使用这个代码:

string url = "http://xxxxx.xxxxx.com/api/sendmsg.php?user=xxxx&pass=xxxx&sender=xxx&phone=xxxxxxxxxxx&text=this%20is%20test%20sms&priority=ndnd&stype=normal";
string s = "var xmlHttp = new XMLHttpRequest();";
s += "xmlHttp.open('GET'," + url + ", false);";
s += "xmlHttp.send(null);";

ClientScript.RegisterStartupScript(this.GetType(), "script", s, true);

【讨论】:

  • 我更喜欢服务器端,但我应该在哪里添加 url,你的意思是地址是 url
  • 是的,对不起,我修改了答案。
  • 没有问题,但现在WebClient 被红线下划线表示找不到网络类型WebClient
  • using System.Net;添加到页面底部(那里应该还有其他using ...行)。
【解决方案2】:

如果你想让它在当前窗口中打开, 然后将'popup_window' 替换为'_self'

【讨论】:

    【解决方案3】:

    有很多方法可以完成这项任务:

    1. 使用 AJAX 向此 URL 发送 GET 或 POST 请求。这可以通过常规的browser apiJQuery 轻松完成。

    2. 您可以加载设置为具有最小宽度/高度的iframe,或仅加载no display

    3. 您可以在页面中添加一个img 标记,并将src 属性设置为您的API 的url。如果您使用此选项,那么最好找到隐藏image not found icon 的方法。

    浏览器是为发送请求而设计的,所以它有很多方法可以这样做,所有这些方法都有自己的属性和权衡。我建议研究实现此目的的多种方法,并选择最适合您的特定用例的方法。祝你好运!

    【讨论】:

      【解决方案4】:

      您可以将iframedisplay:none 一起使用,而不是使用window.open,然后更改此iframe 的网址。

      请在下面找到代码。

      使用 RegisterStartupScript

      ASPX

      <div ID="myCustomDiv"></div>
      
      <script type="text/javascript">
          function updateDiv(content) {
              document.getElementById("myCustomDiv").innerHTML = content;
          }
      </script>
      

      后面的代码

      protected void Page_Load(object sender, EventArgs e)
      {
          string url = "updateDiv(\"<iframe style='display:none' src='http://stackoverflow.com'></iframe>\");";
      
              ClientScript.RegisterStartupScript(this.GetType(), "script", url, true);
          }
      

      页面加载期间的另一种方法

      ASPX

      <div runat="server" ID="myCustomDiv"></div>
      

      后面的代码

      protected void Page_Load(object sender, EventArgs e)
      {
          if (!IsPostBack)
          {
              string iframeString = "<iframe style=\"display:none\" src=\"http://stackoverflow.com\"></iframe>";
      
                  myCustomDiv.InnerHtml=iframeString;
              }
          }
      

      【讨论】:

      • 如果你不介意的话,你可以分享一个例子吗
      • 我正在处理它...过一段时间我会用示例更新我的回复
      • 添加了代码。我使用 fiddler 验证了它的工作原理
      猜你喜欢
      • 2018-01-01
      • 2012-06-13
      • 1970-01-01
      • 2021-06-26
      • 2017-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-11
      相关资源
      最近更新 更多