来自Chrome的JQuery AJAX FormData无法解析.Net WebMethod

时间:2018-04-22 15:44:28

标签: jquery .net ajax webmethod

我有一堆基于jquery的ajax调用,我正在VB.Net后端为客户端处理。在IE中,一切都运行良好,但我不能让它在任何其他客户端上工作。下面是ajax调用的示例。我不认为客户端实际上存在问题。

            function gallery_update() {
                var product_id = document.getElementById("hid_product_id").value;
                var requestdata = new FormData();
                requestdata.append("product_id", product_id);
                $.ajax({
                    type: "POST",
                    url: "/Admin/Product/WebService.asmx/Gallery_Update",
                    async: true,
                    data: requestdata,
                    contentType: "multipart/form-data;charset=ISO-8859-1",
                    processData: false,
                    cache: false,
                    success: function (responsedata) {
                        gallery_draw(responsedata.childNodes['0'].textContent);
                    },
                    error: function (jqXHR, textStatus, errorThrown) {
                        alert(errorThrown);
                    }
                });
            }

在服务器端,我有一个像这样开始的网络服务:

<WebService(Namespace:="http://tempuri.org/")> _
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
<System.ComponentModel.ToolboxItem(False)> _
Public Class WebService
    Inherits System.Web.Services.WebService

    <WebMethod()> _
    Public Function Gallery_Update() As String
        Dim output As String = ""
        Dim Product_ID As Integer = HttpContext.Current.Request.Form("product_id")
        Dim one_product As prod_Product = New prod_Product()
        one_product.Read(Product_ID)
        Dim all_images As List(Of String) = New List(Of String)()

因此,一切都在IE中按预期工作,但在chrome(和firefox)中,request.form集合始终为空。

我已经完成了一些streamreader代码来解决它,我发现请求正文如下所示:

"------WebKitFormBoundaryYbtyKCr4yuYdjtMm  Content-Disposition: form-data; name="product_id"    1  ------WebKitFormBoundaryYbtyKCr4yuYdjtMm--  "
"-----------------------------7e239e1fd0936  Content-Disposition: form-data; name="product_id"    2  -----------------------------7e239e1fd0936--  "

(顶部来自chrome,底部来自ie),我真的没有看到任何问题。 cr和lf呈现为空格,但它们是我所期望的。

我唯一真正的猜测是webkit边界存在一些问题。看起来IE使用十六进制作为其边界,而chrome使用更通用的字符串格式。

0 个答案:

没有答案