簡體   English   中英

jQuery和ASP.NET Ajax調用.NET給500錯誤

[英]Jquery and ASP.NET ajax call to .NET is giving 500 error

我創建了一個像這樣的對象:

Object {ABC-123: "XYZ", ABC-112: "LAX"}

並且我試圖將該對象發送到.NET,但是出現500錯誤,這是我發送該對象的方式:

 $.ajax({
            type: "POST",
            url: "/vendorProject/api/connection/updateVendorItem",
            data: JSON.stringify(editObject),
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (data) {
                alert('success');
            },
            failure: function (errMsg) {
                alert('failed');
            }
        });

變量editObject是上面的對象。 我認為這不是問題。

我將其發送到ASP.NET中的此控制器:

public List<VendorUpdateClass> updateVendorItem(string[] edittedItems)
        {
            ConnectionClass jobs = new ConnectionClass();
            return jobs.updateVendors(edittedItems);
        }

然后發送該類:

public List<VendorUpdateClass> updateVendors(string[] items)
        {
            VendorUpdateCell = new List<VendorUpdateClass>();

            VendorUpdateClass vendorUpdatedItem = new VendorUpdateClass();

            for (int i = 0; i < items.Length; i++ ){
                vendorUpdatedItem.job = items[i];
                vendorUpdatedItem.task = items[i];
                vendorUpdatedItem.vendor = items[i];

                VendorUpdateCell.Add(vendorUpdatedItem);
            }

            return VendorUpdateCell;
        }

現在,當我從類中刪除循環時,這是有趣的事情,看起來像這樣:

public List<VendorUpdateClass> updateVendors(string[] items)
        {
            VendorUpdateCell = new List<VendorUpdateClass>();

            VendorUpdateClass vendorUpdatedItem = new VendorUpdateClass();

            //for (int i = 0; i < items.Length; i++ ){
                vendorUpdatedItem.job = "aaa";
                vendorUpdatedItem.task = "bbb";
                vendorUpdatedItem.vendor = "ccc";

                VendorUpdateCell.Add(vendorUpdatedItem);
            //}

            return VendorUpdateCell;
        }

這不會給我500錯誤,實際上我從ajax調用中獲得了成功警報。 因此,我假設我在循環遍歷.NET中的對象時做錯了什么?有人有任何建議嗎?

我期望的是vendorUpdatedItem.job等於ABC-123, vendorUpdatedItem.task等於ABC-123, vendorUpdatedItem.vendor等於XYZ(無論如何對於第一個項目)

還有另一個問題...由於IIS無法正常工作,我無法調試.NET代碼。

但是這是我從網絡呼叫中得到的響應:

{“ Message”:“發生錯誤。”,“ ExceptionMessage”:“對象引用未設置為對象的實例。”,“ ExceptionType”:“ System.NullReferenceException”,“ StackTrace”:“在VendorProject.Models .ConnectionClass.updateVendors(String []項目)\\ r \\ n位於lambda_method(Closure,Object,Object [])\\ r \\ n位於System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor。<> c__DisplayClass10.b__9(對象實例,位於System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext,IDictionary2自變量,CancellationToken cancelToken)處的Object [] methodParameters)\\ r \\ n \\ r \\ n ---從上一個引發異常的位置開始的堆棧跟蹤結束--- \\ r \\ n在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任務任務)\\ r \\ n在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任務任務)\\ r \\ n在System.Runtime.CompilerServices。 System.Web.Http.Controllers.ApiControllerA上的TaskAwaiter1.GetResult()\\ r \\ n ctionInvoker.d__0.MoveNext()\\ r \\ n ---在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任務任務)處從上一個引發異常的位置開始的堆棧跟蹤--- \\ r \\ n在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任務任務)在System.Runtime.CompilerServices.TaskAwaiter1.GetResult()\\ r \\ n在System.Web.Http.Controllers.ActionFilterResult.d__2.MoveNext() \\ r \\ n ---從上一個引發異常的位置開始的堆棧結束跟蹤--- \\ r \\ n在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任務任務)\\ r \\ n在System.Runtime.CompilerServices。 TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任務任務)\\ r \\ n在System.Runtime.CompilerServices.TaskAwaiter1.GetResult()\\ r \\ n在System.Web.Http.Controllers.AuthenticationFilterResult.d__0.MoveNext()\\ r \\ n ---在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任務任務)\\ r \\ n處引發異常的先前位置的堆棧結束跟蹤--- \\ r \\ n ystem.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任務任務)\\ r \\ n在System.Runtime.CompilerServices.TaskAwaiter1.GetResult()\\ r \\ n在System.Web.Http.Dispatcher.HttpControllerDispatcher.d__1.MoveNext() }

您的Javascript對象應如下所示:

var vendorUpdatLists= [ { job: "ABC-123", task: "XYZ" },  { job: "ABC-333", task: "LAX" }];

而且您的方法定義應如下所示:

public List<VendorUpdateClass> updateVendors(List<VendorUpdateClass> vendorUpdateItems) {
  // It's time to use the list!
  if (vendorUpdateItems != null && vendorUpdateItems.Count() > 0) {
    string job = vendorUpdateItems[0].job; // ABC-123
    string task = vendorUpdateItems[0].task; // XYZ
  }
}

最后,我建議您遵循正確的命名約定。 例如,公共財產應以大寫字母開頭。

string job = vendorUpdateItem.Job;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM