2017-02-08 9 views
1

クライアントからデータベースにフォームデータを投稿しようとしているApacheのコードバプロジェクトがあります。私はjsonを私は私のAPIにDALに、その後、データベースに送信データを送信する送信することができます。エントリはテーブルを正しく更新し、前のエントリが存在するかどうかに基づいて1または-1を返します。この値はクライアントに送信されます。正確な応答が返ってきているのがわかりますが、私のAjaxの成功関数は発生しません。Ajaxの成功関数は実行されません

アヤックス:

$("#submit").click(function() { 
     var info = { 
      Username: $("#username").val(), 
      Password: $("#password").val(), 
      Firstname: $("#firstname").val(), 
      Lastname: $("#lastname").val(), 
      Email: $("#email").val() 
     }; 

     info = JSON.stringify(info); 

     event.preventDefault(); 
     $.ajax({ 
      type: "POST", 
      dataType: "json", 
      async: false, 
      url: "http://localhost:57207/api/User/RegisterUser", 
      data: info, 
      success: function(data) { 
       console.log(data); 
      }, 
      error: function(input) { 
       console.log(JSON.stringify(input)); 
      } 
     }) 
    }); 

コントローラー:

要求::

[System.Web.Http.HttpPost] 
    public JObject RegisterUser(JObject obj) 
    { 
     RegisterUsers user = new RegisterUsers(); 
     user = JsonConvert.DeserializeObject<RegisterUsers>(((JProperty)obj.First).Name); 
     var temp = DataAccessLayer.RegisterUser(user.Username, user.Password, user.Firstname, user.Lastname, user.Email, null, null); 
     JObject jobj = new JObject(); 
     jobj.Add("output", temp.ToString()); 

     return jobj; 
    } 

私はここに私の応答と要求をチェックするためにシオマネキを使用して、とされているが、生データであり、

POST http://localhost:57207/api/User/RegisterUser HTTP/1.1 
Host: localhost:57207 
Connection: keep-alive 
Content-Length: 125 
Accept: text/html, */*; q=0.01 
Origin: http://evil.com/ 
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36 
Content-Type: application/x-www-form-urlencoded; charset=UTF-8 
Referer: http://localhost:4400/test.html 
Accept-Encoding: gzip, deflate, br 
Accept-Language: en-US,en;q=0.8 

{"Username":"johndoe","Password":"password!!!","Firstname":"john","Lastname":"doe","Email":"[email protected]"} 

応答:

HTTP/1.1 200 OK 
Cache-Control: no-cache 
Pragma: no-cache 
Content-Type: application/json; charset=utf-8 
Expires: -1 
Server: Microsoft-IIS/10.0 
Access-Control-Allow-Origin: * 
X-AspNet-Version: 4.0.30319 
X-SourceFiles: =?UTF-8?B?RDpcRGV2ZWxvcG1lbnRcVGV4dDJQaG9uaWNzXFJlc3RBUElcYXBpXFVzZXJcUmVnaXN0ZXJVc2Vy?= 
X-Powered-By: ASP.NET 
Access-Control-Allow-Origin: * 
Access-Control-Allow-Methods: GET,POST,OPTIONS 
Access-Control-Allow-Headers: Content-Type, soapaction 
Date: Wed, 08 Feb 2017 19:52:43 GMT 
Content-Length: 15 

{"output":"-1"} 

私の誤差関数はその火事一つであり、ここで出力されます:

にconsole.log:

{"readyState":0,"status":0,"statusText":"NetworkError: Failed to execute 'send' on 'XMLHttpRequest': Failed to load 'http://localhost:57207/api/User/RegisterUser'."} 

更新:

私がいましたasyncをtrueに設定でき、新しいエラーメッセージは次のようになります:

{"readyState":0,"status":0,"statusText":"error"} 
+0

'$ .ajax'のデータ型を" application/json "に設定してみてください –

+0

@AlexanderStaroselsky違いはありません。私はまだエラー関数を打つ。 –

答えて

0

代わりに、IHttpActionResultまたはIActionResult,Ok()を返信してください。

public IActionResult RegisterUser(JObject obj) 
{ 
    RegisterUsers user = new RegisterUsers(); 
    user = JsonConvert.DeserializeObject<RegisterUsers>(((JProperty)obj.First).Name); 
    var temp = DataAccessLayer.RegisterUser(user.Username, user.Password, user.Firstname, user.Lastname, user.Email, null, null); 
    JObject jobj = new JObject(); 
    jobj.Add("output", temp.ToString()); 

    return Ok(jobj); 
} 

それが失敗する場合は、単にreturn Ok("Hello World!");のような単純な文字列を返してみてください。単純な文字列で成功すると、オブジェクトのシリアル化が失敗しているか、無効なJSONとして出力されている可能性があります。

+0

IHttpActionResultを返そうとしましたが、失敗しました。単純な文字列を返すこともできませんでした。 {"readyState":0、 "status":0、 "statusText": "NetworkError: 'XMLHttpRequest'で 'send'を実行できませんでした: 'http:// localhost: 57207/api/User/RegisterUser '。 "} –

関連する問題