2017-05-08 2 views
0

Bitte beachten Sie die AJAX-Code unten:AJAX Array stoppen AJAX rufen

function Save() 
     { 

      var checkBoxArray = $("input:checkbox:checked").map(function() { 
       return this.id 
      }).get(); 

      var str = JSON.stringify(checkBoxArray); 
       var user = document.getElementById("ctl00_ContentPlaceHolder1_lstUsers"); 
       $.ajax({ 
        type: "POST", 
        url: "frmReview.aspx/AllocateReview", 
        data: '{strUser: "' + user.value + '", strCheckBoxes: ' + str + '}', 
        contentType: "application/json; charset=utf-8", 
        dataType: "json", 
       success: OnSuccess(), 
       async: false, 
       failure: function (response) { 
        alert('There was a problem allocating the reviews') 
       } 
       }); 

       function OnSuccess() { 
        return function (response) { 
         alert("The reviews where allocated successfully"); 
        } 
       } 
    } 

und der Server-Side-Code unten:

<System.Web.Services.WebMethod()> _ 
    Public Shared Sub AllocateReview(ByVal strUser As String, ByVal strCheckBoxes As String) 
     msgbox("got here") 
    End Sub 

Ich habe einen Stützpunkt auf der messagebox (Server-Seite). Es wird jedoch nicht erreicht. Es wird erreicht, wenn ich str nicht überlasse (was ein Array ist), d. H. Ich schließe es auf der Clientseite und der Serverseite aus. Warum wird das Array nicht an den Server übergeben? Es gibt keinen Fehler - es ist, als ob nichts passiert.

+0

Sie sollten ein JavaScript-Name/Wert-Objekt als Wert von 'Daten' übergeben; Es sollte nicht nur eine Zeichenfolge sein, es sei denn, es ist in Form einer URL-Abfragezeichenfolge. – Pointy

+0

@ Pointy, kannst du das in einer Antwort posten? – w0051977

+0

@Pointy Sie können eine JSON-Zeichenfolge übergeben, wenn der Server es erwartet – epascarello

Antwort

1

In einem jQuery $.ajax() Aufruf, die data Eigenschaft sollte entweder

  • ein URL-Stil Query-String ("foo = bar & hallo = Welt") sein;
  • ein einfaches Objekt ({ foo: "bar", hello: "world" });
  • ein Array von Objekten mit name und value Eigenschaften

    [ { name: "foo", value: "bar" }, 
        { name: "hello", value: "world" }] 
    

Ihr Code baut einen JSON-String, und ich glaube nicht, es sein sollte.