programing

jQuery ajax request with json response, 어떻게 해야 하나요?

closeapi 2023. 3. 2. 22:17
반응형

jQuery ajax request with json response, 어떻게 해야 하나요?

두 개의 post 값으로 ajax 요청을 보냅니다.첫 번째는 php 스크립트가 해석해야 하는 액션을 정의하는 "action"이고, 다른 하나는 스크립트를 해석해야 하는 사용자의 ID인 "id"입니다.

서버는 array() 내에서 6개의 값을 반환하고 PHP 함수를 사용하여 JSON으로 인코딩됩니다.json_encode();

내 응답 중 일부는 HTML이지만 JSON으로 인코딩하면 빠져나간다."/"그렇게 되면"\/"
그걸 어떻게 끄죠?

또한 서버 응답을 받았을 때 이것을 jQuery에 표시하는 방법을 모를 때는 div에 모두 넣으면 요청한 숫자와 HTML 코드만 표시된다고 생각했지만 PHP로 인코딩된 배열로 표시됩니다.

PHP

$response = array();
$response[] = "<a href=''>link</a>";
$response[] = 1;
echo json_encode($response);

j쿼리:

$.ajax({
    type: "POST",
    dataType: "json",
    url: "main.php",
    data: "action=loadall&id=" + id,
    complete: function(data) {
        $('#main').html(data.responseText);
    }
});

이걸 어떻게 JSON으로 만들죠?

에 전화해야 합니다.

$.parseJSON();

예를 들어 다음과 같습니다.

...
success: function(data){
       var json = $.parseJSON(data); // create an object with the key of the array
       alert(json.html); // where html is the key of array that you want, $response['html'] = "<a>something..</a>";
    },
    error: function(data){
       var json = $.parseJSON(data);
       alert(json.error);
    } ...

http://api.jquery.com/jQuery.parseJSON/ 에서 확인하실 수 있습니다.

슬래시 문제가 해결되지 않는 경우:security.security quotes.security를 검색합니다.php 또는: function.slashes.php

주의:

여기 이 답변은 사용하려는 사용자를 위한 것입니다.$.ajax와 함께dataType로 설정된 속성json그마저도 잘못된 응답 유형을 가지고 있습니다.의 정의header('Content-type: application/json');서버의 경우 문제를 해결할 수 있지만,text/html또는 다른 타입의$.ajax메서드는 변환해야 합니다.json. 이전 버전의 jQuery를 사용하여 테스트하고 버전 이후만 테스트합니다.1.4.4$.ajax임의의 콘텐츠유형을 강제로 변환합니다.dataType통과된.따라서 이 문제가 있는 경우 jQuery 버전을 업데이트해 보십시오.

우선, PHP 헤더를 JSON에 대응하도록 설정하면 도움이 됩니다.

header('Content-type: application/json');

다음으로, Ajax 콜을 조정하는 데 도움이 됩니다.

$.ajax({
    url: "main.php",
    type: "POST",
    dataType: "json",
    data: {"action": "loadall", "id": id},
    success: function(data){
        console.log(data);
    },
    error: function(error){
         console.log("Error:");
         console.log(error);
    }
});

성공하면 수신한 응답이 진정한 JSON으로 선택되고 개체가 콘솔에 기록됩니다.

메모: 순수 html을 선택하고 싶다면 JSON에 다른 방법을 사용하는 것을 고려할 수도 있지만, 개인적으로 JSON을 사용하여 템플릿(핸들바 js 등)을 사용하여 html로 렌더링하는 것을 권장합니다.

마크업을 문자열로 작성하기 때문에 json으로 변환할 필요가 없습니다.모든 어레이 요소를 조합한 상태로 전송하면 됩니다.implode방법.이거 먹어봐.

PHP 변경

$response = array();
$response[] = "<a href=''>link</a>";
$response[] = 1;
echo implode("", $response);//<-----Combine array items into single string

JS(dataType을 json에서html로 변경하거나 설정 안 함jQuery가 알아냅니다)

$.ajax({
   type: "POST", 
   dataType: "html", 
   url: "main.php", 
   data: "action=loadall&id=" + id,
   success: function(response){
      $('#main').html(response);
   }
});

바인드된 데이터와 함께 opcode를 송수신하여 javascript clientside 컨트롤러와 php 서버사이드 컨트롤러를 연결합니다.따라서 당신의 php 코드는 jsreceipient/listener의 응답 함수 델타로서 송신할 수 있습니다.

https://github.com/ArtNazarov/LazyJs 를 참조해 주세요.

영어가 서툴러서 미안해

이 코드를 사용해 보세요.데이터 유형이 JSON이므로 JSON 개체를 반환하므로 구문 분석 기능이 필요하지 않습니다.

$.ajax({
    url : base_url+"Login/submit",
    type: "POST",
    dataType: "json",
    data : {
        'username': username,
        'password': password
    },
    success: function(data)
    {
        alert(data.status);
    }
});

언급URL : https://stackoverflow.com/questions/9098649/jquery-ajax-request-with-json-response-how-to

반응형