Ajax请求在其他请求(.NET+jQuery)的成功结果之后

Ajax request after success result of other reqjest (.NET + jQuery)

本文关键字:请求 成功 之后 结果 NET+jQuery 其他 Ajax      更新时间:2023-09-26

我需要从服务器获取xml文档,然后客户端对其进行签名并发送回服务器。

在服务器端,我有保存文档的web方法:

[WebMethod]
public static void SaveSignedDocument(string SignedData)
{
    SignedCms signedCms = new SignedCms();
    ....
}

然后,我从服务器上获取文档,在成功接收到文档后,我让客户端签名并发回。这是Javascript

// get xml to sign
$.ajax({
        type: "POST",
        url: "Default.aspx/GetXMLReceipt",
        data: "{'ITN': " + ITN + " }",
        contentType: "application/json; charset=utf-8",
        dataType: "xml",
        success: function (xml) {
            // xml file was got
            var xmlString = xmlToString(xmlData);
            // Sign data
            var SignedData = SignData(xmlString);
            // Send it to server
            $.ajax({
                url: 'Default.aspx/SaveSignedDocument',
                data: "{ 'SignedData': '" + SignedData + "' }",
                type: "POST",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (data){
                    alert('Document was successfully sent!');
                }
                error: function (data, status, jqXHR) {
                    alert('Send signed data failed - ' + jqXHR);
                }
            });
        },
        error: function (data, status, jqXHR) {
            alert('Get data failed - ' + jqXHR);
        }
    });

问题是,没有一个在第二次请求时发出警报。如果我将请求更改为同步,一切都可以,但为什么它不能像上面写的那样工作?服务器什么也没收到,如果我们查看网络流量,我会发现请求被中断了。为什么?

正确编码数据,不要使用任何字符串串联。以下是正确的方法:

data: JSON.stringify({ ITN: ITN }),

在您的第二个AJAX请求上:

data: JSON.stringify({ SignedData: SignedData })

JSON.stringify方法将通过正确编码参数来确保向服务器发送有效的JSON。