Ajax调用数据无法在经典的asp中访问

时间:2014-11-16 13:08:32

标签: jquery ajax asp-classic

我无法访问从jquery ajax调用发送的经典asp文件中的数据。

这是我的ajax电话

$.ajax({
      type: "GET",
  url: "mymessage.asp?phone=" + $( "#mobile1" ).val() + "&message=" + $('textarea#message').val(),
    data:{ 

   phone: $( "#mobile1" ).val(),
   message: $('textarea#message').val()

   },
  contentType: "text/html; charset=utf-8",
  dataType: "text",
  success: function(msg) {
    // Replace the div's content with the page method's return.
    alert(msg);

  }
});

我正在从asp页面访问请求值

<%Request.Form("phone")%>

<%Request.Form("message")%>

但它不起作用。

我使用Firefox firebug进行了调试。该请求正在访问mymessage.asp页面,但我无法访问经典asp文件中的请求变量

经过长时间的搜索和各种试验和打击方法,我厌倦了。究竟出了什么问题?请帮忙。

P.S:数据值没有任何问题,因为我使用console.log打印并且数据值很好。问题在于访问经典asp代码中的数据。您还可以看到我保留了数据和附加的URL(虽然我单独尝试了它们仍然无法正常工作)

2 个答案:

答案 0 :(得分:1)

由于您将这些值作为查询字符串(mymessage.asp?phone=" + $( "#mobile1" ).val() + "&message=" + $('textarea#message').val())传递给asp页面,因此您无法使用Request.Form检索这些值,因为它是GET请求而非{{1}请求。另外,如果您查看POST方法,则为Get方法 - ajax

要访问这些值,您需要使用type: "GET",

e.g。 Request.QueryString

阅读本文 - Difference between Request.Form and Request.QueryString?

答案 1 :(得分:1)

@ArindamNayakabsolutely right

GET和POST了解差异

HTTP GET请求将数据作为序列化参数字符串传递,这些参数由附加到请求URL的&符号(&)分隔符分隔,也称为查询字符串。

HTTP POST请求将请求正文中的数据作为序列化参数字符串传递,其形式与GET查询字符串相同。

经典ASP可以轻松地使用两个集合

访问这些值

请求集合

  • Request.QueryString() - 包含通过GET请求方法请求的所有参数。

  • Request.Form() - 包含通过POST请求方法请求的所有参数。

  • 请求() - 包含通过GETPOST请求方法请求的所有参数。

    注意: - 此方法的效率较低,因为如果您知道数据来自何处,则必须同时在QueryStringForm集合中检查参数< em>(无论是GET还是POST请求)最好使用相应的集合。


使用示例

如果提出以下请求

GET http://example.com/default.asp?phone=123456&message=test HTTP/1.1

default.asp页面中,可以使用Request.QueryString()Request()个集合来访问参数。

<%
  Dim message

  'Retrieves parameter from Request.QueryString collection.
  phone = Request.QueryString("message")
  'Checks both Request.Form and Request.QueryString.
  phone = Request("message")

  Response.Write phone 'Returns "test"
%>

如果提出以下请求

POST http://example.com/default.asp HTTP/1.1

phone=12345&message=test

default.asp页面中,可以使用Request.Form()Request()个集合来访问参数。

<%
  Dim message

  'Retrieves parameter from Request.Formcollection.
  phone = Request.Form("message")
  'Checks both Request.Form and Request.QueryString.
  phone = Request("message")

  Response.Write phone 'Returns "test"
%>

jQuery Ajax请求怎么样?

jQuery非常容易传递这些信息,你要确保正确设置的三个属性是;

  • url - 我们向其发送数据的网址,不包括查询字符串,只包含经典ASP网页的绝对/相对路径。

  • 类型 - GETPOST,具体取决于预期的请求方式。

  • 数据 - 我们发送到网址的数据。如果是type: "GET",则数据将在AJAX请求期间自动序列化并附加为URL查询字符串。

使用我之前的示例,AJAX请求看起来像这样;

$.ajax({
  type: "GET",
  url: "http://example.com/default.asp",
  data: {
    phone: "12345",
    message: "test"
  }
});

将创建一个RAW HTTP请求,如

GET http://example.com/default.asp?phone=12345&message=test HTTP/1.1

并在经典ASP页面default.asp中,您可以使用类似的内容访问参数

<%
  Dim phone, message
  phone = Request.QueryString("phone")
  message = Request.QueryString("message")
%>

有用的链接