【问题标题】:Javascript Ajax call to asp.net webmethod, Internal server errorJavascript Ajax 调用 asp.net webmethod,内部服务器错误
【发布时间】:2017-03-27 08:34:13
【问题描述】:

我在网页上有一段 JavaScript,它允许用户扫描序列号,然后它应该将这些序列号发送到一个网络方法,由数据库记录它并生成一个 txt 文件。

webmethod 中的内容无关紧要,因为代码永远不会运行。 (即使删除整个方法并使其将 bool 更改为 true 作为示例,也会返回相同的错误)。这是Js:

function sendingReady() {

  saveSerialNumbers();

  var employeeNr = document.getElementById("userCode").textContent;
  var productNr = document.getElementById("productCode").textContent;
  var cnt = {
    employeeNumber: employeeNr,
    productNumber: productNr
  };
  $.ajax({
    type: "POST",
    url: "WebServices.asmx/sendingReady",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    data: JSON.stringify({
      'cnt': cnt
    }),
    success: function() {
      console.log("Success sendingReady")
    },
    error: function() {}
  });
  var succes = "succes";
  localStorage.setItem("SuccesVerzenden", succes);
}

function saveSerialNumbers() {

  var scannedserials = [];
  var errorchoises = [];

  var Table = document.getElementById("SerialListContainer");
  var rowLength = Table.rows.length;

  for (i = 0; i < rowLength; i++) {
    var row = Table.rows[i];

    var serialnumber = row.childNodes[0].textContent;
    scannedserials.push(serialnumber);

    var errorChoice = row.childNodes[1].childNodes[0].value;
    errorchoises.push(errorChoice);
  }

  var cnt = {
    serialNumber: scannedserials,
    sendingErrorcode: errorchoises,
    personalNumber: document.getElementById("userCode").textContent,
    productNumber: document.getElementById("productCode").textContent
  };
  $.ajax({
    type: "POST",
    url: "WebServices.asmx/createSendingCeetisFile",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    data: JSON.stringify({
      'cnt': cnt
    }),
    success: function() {
      console.log("Success saveSerialNumbers")
    },
    error: function() {}
  });

}

要使顶级功能正常工作,我在日志中收到“成功 SendingReady”消息。但是由顶部调用的底部函数却没有。从将数据作为 4 个单独的实例发送,到更改 Ajax 调用中的选项,再到更改收件人 web 方法,我已经尝试了所有方法。这就是说的webmethod:

[System.Web.Services.WebMethod]
public void createSendingCeetisFile(SendingErrors cnt)
{
//unimportant code that doesn't ever run anyway; 
}

发送错误为:

public class SendingErrors
{
    public string[] serialNumber { get; set; }
    public string[] sendingErrorcode { get; set; }
    public string[] dollies { get; set; }
    public string personalNumber { get; set; }
    public string productNumber { get; set; }
}

Dollies 尚未使用。我正在使用 IIS,但还没有找到任何调试服务器端的方法;所有 IIS 日志显示的是一个通用的“500”,没有进一步的细节。

我真的希望我遗漏了一些明显的东西,但是在浏览这些论坛和其他网站一天多一点的时间里寻找答案之后,我有点失去希望了。

【问题讨论】:

  • var succes = "succes"; localStorage.setItem("SuccesVerzenden", succes); 肯定是在错误的地方。它需要在成功函数中 - 它可能是这个函数的副本:stackoverflow.com/questions/14220321/…
  • 您使用的是 .Net Framework 还是 .Net Core?
  • @mplungjan 你是对的,那是在错误的地方,但它也没有导致错误.. ajax 工作得很好,它是第二个(createSendingCeetisFile)回来了出现错误。
  • @Sty 我不确定说实话,我对 Asp.net 还很陌生,虽然我有 C# 的更大背景,但我一直只是使用 Visual Studio。我不是这段代码的原作者,向我保证这一切都非常简单和有效的人,但现在我被困在调试的东西只有一半的理解。
  • 了解您是否使用 .Net Core 的简单方法是查看您的项目是否有一个名为 project.json 的文件(假设您没有使用 VS 2017,它已经消除了该文件) .如果不是,那么您正在使用 .Net Framework。

标签: javascript c# jquery asp.net ajax


【解决方案1】:

感谢 M Adeel Khalid 和 mplungjan 的帮助。尽管您的回答都不是直接答案,但它给我的理解给了我尝试从另一个函数中删除该函数并直接从按钮调用它的想法。这成功了。我仍然遇到一个奇怪的错误,但该函数完成了它应该做的所有事情,将记录保存到数据库并将其写入文件以供不同程序使用。

【讨论】:

  • 所以这很可能是同步/异步的事情,但我仍然不确定为什么。该代码从上到下运行在我的编程背景中是如此根深蒂固,我在意识到这一切如何工作时遇到了真正的问题。
猜你喜欢
  • 2015-07-12
  • 2017-04-16
  • 1970-01-01
  • 1970-01-01
  • 2015-12-27
  • 1970-01-01
  • 2020-12-11
  • 2019-09-29
  • 2016-10-13
相关资源
最近更新 更多