programing

Javascript: Ajax와 함께 JSON 개체를 보내시겠습니까?

muds 2023. 3. 7. 22:07
반응형

Javascript: Ajax와 함께 JSON 개체를 보내시겠습니까?

이게 가능합니까?

xmlHttp.send({
    "test" : "1",
    "test2" : "2",
});

아마 : 헤더에content type:application/json?:

xmlHttp.setRequestHeader('Content-Type', 'application/json')

그렇지 않으면 다음을 사용할 수 있습니다.

xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')

그리고 나서.JSON.stringifyJSON 오브젝트를 파라미터로 송신합니다만, 가능하다면 이 방법으로 송신하는 것이 좋습니다.

jQuery 사용 시:

$.post("test.php", { json_string:JSON.stringify({name:"John", time:"2pm"}) });

jQuery 사용 안 함:

var xmlhttp = new XMLHttpRequest();   // new HttpRequest instance 
xmlhttp.open("POST", "/json-handler");
xmlhttp.setRequestHeader("Content-Type", "application/json");
xmlhttp.send(JSON.stringify({name:"John Rambo", time:"2pm"}));

jQuery를 사용하지 않을 경우 다음 사항을 확인하십시오.

var json_upload = "json_name=" + JSON.stringify({name:"John Rambo", time:"2pm"});
var xmlhttp = new XMLHttpRequest();   // new HttpRequest instance 
xmlhttp.open("POST", "/file.php");
xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlhttp.send(json_upload);

php 수신 종료의 경우:

 $_POST['json_name'] 

여러 개의 ID 어레이를 전달하고 BLOB를 반환하는 등 나에게 맞는 것을 찾기 위해 며칠 동안 애를 먹었습니다.를 사용하고 있는 경우는, 판명됩니다.NET CORE 2.1을 사용하고 있는 경우 [FromBody]를 사용해야 합니다.또, 데이터를 보관하기 위한 뷰 모델을 작성할 때만 사용할 수 있습니다.

내용은 다음과 같이 정리합니다.

var params = {
            "IDs": IDs,
            "ID2s": IDs2,
            "id": 1
        };

제 경우 이미 어레이를 json'd하고 결과를 함수에 전달했습니다.

var IDs = JsonConvert.SerializeObject(Model.Select(s => s.ID).ToArray());

다음으로 XMLHttpRequest POST를 호출하여 개체를 문자열화합니다.

var ajax = new XMLHttpRequest();
ajax.open("POST", '@Url.Action("MyAction", "MyController")', true);
ajax.responseType = "blob";
ajax.setRequestHeader("Content-Type", "application/json;charset=UTF-8");           
ajax.onreadystatechange = function () {
    if (this.readyState == 4) {
       var blob = new Blob([this.response], { type: "application/octet-stream" });
       saveAs(blob, "filename.zip");
    }
};

ajax.send(JSON.stringify(params));

그럼 이런 모델이 있어.

public class MyModel
{
    public int[] IDs { get; set; }
    public int[] ID2s { get; set; }
    public int id { get; set; }
}

그런 다음 다음과 같은 작업을 통과합니다.

public async Task<IActionResult> MyAction([FromBody] MyModel model)

파일을 반환하는 경우 이 추가 기능 사용

<script src="https://cdnjs.cloudflare.com/ajax/libs/FileSaver.js/1.3.3/FileSaver.min.js"></script>

추가 중Json.stringfy문제를 해결한 Json 주변

언급URL : https://stackoverflow.com/questions/6418220/javascript-send-json-object-with-ajax

반응형