2016-04-05 12 views
0

http://localhost:57501/api/addDatabaseのWebサービスには、次のコードがあります。jQueryポストでWebサービスがnullを受け取るJSON

[System.Web.Mvc.HttpPost] 
    public ActionResult Post(addDatabase pNuevaConeccion) 
    { 
     pNuevaConeccion.insertarMetaData(); 
     return null; 
    } 

のAjax機能はhttp://localhost:1161/CreateServer上の所与の値からJSONを生成するJavaScriptです。

$(ドキュメント).ready(関数(){

$("#createServer").click(function (e) { 

    e.preventDefault(); //Prevent the normal submission action 

    var frm = $("#CreateServerID"); 
    var dataa = JSON.stringify(frm.serializeJSON()); 
    console.log(dataa); 

    $.ajax({ 

     type: 'POST', 
     url: 'http://localhost:57501/api/addDatabase/', 
     contentType: 'application/json; charset=utf-8', 
     crossDomain: true, 
     //ContentLength: dataa.length, 
     data: dataa, 
     datatype: 'json', 
     error: function (response) 
     { 
      alert(response.responseText); 

     }, 
     success: function (response) 
     { 
      alert(response); 
      if (response == "Database successfully connected") { 
       var pagina = "/CreateServer" 
       location.href = pagina 


      } 
     } 
    }); 

}); 

})。 このコードを実行すると「未定義」という警告が表示されますが、contentTypeを削除すると警告が表示されません。問題は、私がconsole.logを実行して以来、dataaという名前のJSONがNULLではないことがわかっていても、(Webサービスの)Post関数が受け取る変数がNULLであることです。

私はさまざまな例を見てきましたが、かなりのすべてが私が相対URLを使用すべきだと言っていますが、問題は2つの異なるドメインがあり、試したときにURLが見つかりませんでした同じローカルホストにあります。

答えて

1

Webサービスは、nullではなくJSON形式を返す必要があります。以下の例のように。

public JsonResult Post() 
    { 
     string output = pNuevaConeccion.insertarMetaData(); 

     return Json(output, JsonRequestBehavior.AllowGet); 
    } 
0

$.ajax({ 
     method: "POST", 
     contentType: "application/json; charset=utf-8", 
     data: dataa, 
     url: 'http://localhost:57501/api/addDatabase/', 
     success: function (data) { 
      console.log(data);    
     }, 
     error: function (error) { 
      console.log(error); 
     } 
}); 
0
its my old code.(ensure action parameter variable name and post variable name are same) 

$('#ConnectionAddres_ZonesId').change(function() { 
      var optionSelected = $(this).find("option:selected"); 
      var id = { id: optionSelected.val() }; 

      $.ajax({ 
       type: "POST", 
       url: '@Url.Action("GetParetArea", "Customers")', 
       contentType: "application/json;charset=utf-8", 
       data: JSON.stringify(id), 
       dataType: "json", 
       success: function (data) { 
        $('#ConnectionAddres_ParentAreaId').empty().append('<option value="">Select parent area</option>'); 
        $.each(data, function (index, value) { 
         $('#ConnectionAddres_ParentAreaId').append($('<option />', { 
          value: value.Id, 
          text: value.Area 
         })); 
        }); 
       }, 
      }); 
     }); 

public ActionResult GetParetArea(int id) 
     { 
      var parents=""; 
      return Json(parents, JsonRequestBehavior.AllowGet); 
     } 
Webメソッドを呼び出すため、このコードを使用してみてください
関連する問題