且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

经典ASP-无法从AJAX发布请求获取Request.Form值

更新时间:2023-01-17 11:04:26

我正在研究一种读取数据的解决方案,该方法在下面起作用.不确定这是***/最便宜的方法,但是它有效!

I worked on a solution to reading the data, this works below. Not sure it is the best / least expensive way to do this, but it works!

感谢大家的帮助/提示.如果有人有更好的方法来解析上面的响应,我会很::

Thanks to everyone for the help / tips. If anyone has a better way to parse the response above, I'm all ears :)

<%
Function BytesToStr(bytes)
   Dim Stream
   Set Stream = Server.CreateObject("Adodb.Stream")
      Stream.Type = 1 'adTypeBinary
      Stream.Open
      Stream.Write bytes
      Stream.Position = 0
      Stream.Type = 2 'adTypeText
      Stream.Charset = "iso-8859-1"
      BytesToStr = Stream.ReadText
      Stream.Close
   Set Stream = Nothing
End Function

If Request.TotalBytes > 0 Then
   Dim lngBytesCount, post
   lngBytesCount = Request.TotalBytes
   post = BytesToStr(Request.BinaryRead(lngBytesCount))
End If

Response.ContentType = "text/plain"

sContentType = Replace(Request.ServerVariables("CONTENT_TYPE"),"multipart/form-data; boundary=---------------------------","")

arrPost = Split(post,"-----------------------------" & sContentType)

For i = 0 to UBound(arrPost)
    sVal = Replace(arrPost(i),"Content-Disposition: form-data; name=","")
    arrVal = Split(sVal,Chr(10),1)

    For a = 0 to UBound(arrVal)

        If Instr(1, arrVal(a), "contact_name") <> 0 Then
            Response.Write GetValue(arrVal(a), "contact_name")
        End If
        If Instr(1, arrVal(a), "contact_message") <> 0 Then
            Response.Write GetValue(arrVal(a), "contact_message")
        End If

    Next
Next 

Function GetValue(f_FullString, f_FieldName)
    fieldval = Replace(f_FullString, """" & f_FieldName & """","")
    'response.Write "_" & fieldval & "_<Br>"
    arrVal1 = Split(fieldval,Chr(10),1)

    For b = 0 to UBound(arrVal1)
        newval = arrVal1(b)
        newval = Left(newval,Len(newval) - 2)
        newval = Right(newval,Len(newval) - 6)

        'For z = 1 to Len(newval)
        '   CurrChar = Mid(newval, z, 1)
        '   Response.Write Asc(CurrChar) & "<bR>"
        'Next
    Next
    GetValue = newval
End Function
%>

更新:

如果已安装ASPUpload,则这是另一种解决方案.我昨晚尝试了此操作,但忘了添加Upload.Save(这可以为我节省4个小时的工作--- UGGGGGHHHH).

This is another solution if you have ASPUpload installed. I tried this last night, but forgot to add Upload.Save (which would have saved me 4hours of work --- UGGGGGHHHH).

'http://www.aspupload.com/manual_memory.html
Set Upload = Server.CreateObject("Persits.Upload")
Upload.Save
Name = Upload.Form("contact_name")
Response.Write Name