kikki's tech note

技術ブログです。UnityやSpine、MS製品など技術色々について解説しています。

jQueryまたはjavascriptで非同期通信する方法

本章では、jQueryまたはjavascriptで非同期通信する方法についてメモ書きします。

javascriptで非同期通信

jsonデータでPOSTする場合

[javascript file]

var _xhr = new XMLHttpRequest();
_xhr.onreadystatechange = function () {
    switch (_xhr.readyState) {
        case 1:
            // request start
            break;
        case 2:
            // recieved header data
            break;
        case 3:
            // reciving body data
            break;
        case 4:
            // complete xhr connect
            switch (_xhr.status) {
                case 200:
                    // success
                    // * in the case, recieved json data
                    var _recieveData = JSON.parse(_xhr.responseText);
                    break;
                default:
                    // error
                    break;
            }
            break;
    }
};
_xhr.open("POST", "/HogeHoge/GetUser");
_xhr.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
_xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
_xhr.send(JSON.stringify({
    id: "<<ID>>",
    name: "<<Name>>",
    remember: false,
}));

[C# file]

public class HogeHogeController : Controller
{
[HttpPost]
public JsonResult GetUser(
    int id
    , string name
    , bool remember
    )
{
}
}

ローカルファイルを含むデータでPOSTする場合

[javascript file]

var _file = document.getElementById("<<upload>>").files[0];
var _formData = new FormData();
// * file data
_formData.append("files", _file);
// * json data
_formData.append("nickName", "<<NickName>>");

var _xhr = new XMLHttpRequest();
_xhr.onreadystatechange = function () {
    switch (_xhr.readyState) {
        case 1:
            // request start
            break;
        case 2:
            // recieved header data
            break;
        case 3:
            // reciving body data
            break;
        case 4:
            switch (_xhr.status) {
                case 200:
                    var _recieveData = JSON.parse(_xhr.responseText);
                    if (_recieveData)
                        alert("プロファイルの更新に成功しました");
                    break;
                default:
                    alert("プロファイルの更新に失敗しました");
                    break;
            }
            leadotObjects.localVar.IsRunningAjax = false;
            break;
    }
};
_xhr.open("POST", "/HogeHoge/PostFile");
_xhr.setRequestHeader("Content-Type", "multipart/form-data");
_xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
_xhr.send(_formData);

[C# file]

public class HogeHogeController : Controller
{
[HttpPost]
public JsonResult PostFile(
    string nickName
    , HttpPostedFileBase[] files
    )
{
}
}

jQueryで非同期通信

jsonデータでPOSTする場合

[javascript file]

$.ajax({
    type: "POST",
    contentType: "application/json",
    url: "/HogeHoge/Get)",
    data: JSON.stringify({
       id: "<<ID>>",
       name: "<<Name>>",
       remember: false,
    })
}).done(function (result) {
    // success
}).fail(function (ex) {
    // error
});

ローカルファイルを含むデータでPOSTする場合

[javascript file]

var _file = document.getElementById("<<upload>>").files[0];
var _formData = new FormData();
// * file data
_formData.append("files", _file);
// * json data
_formData.append("nickName", "<<NickName>>");

$.ajax({
    type: "POST",
    url: "HogeHoge/PostFile",
    enctype: "multipart/form-data",
    processData: false,
    contentType: false,
    data: _formData,
}).done(function (element) {
    // success
}).fail(function (ex) {
    // error
});
※無断転載禁止 Copyright (C) 2015 kikkisnrdec All Rights Reserved.