2013-05-02 3 views
0

PHP 파일에 두 개의 JSON을 만들었습니다. $response = array('valid' => true); ajax/jquery를 통해 json을 조작하십시오.

$response = array('invalid' => true);

    1. 는 지금은 아약스를 생성하고 입력 상자가 JSON에 따라 경우 클래스를 변경하려고합니다.

      $.ajax({ 
          type: "GET", 
          url: '/script/validate_email.php', 
          data: {i_emial:val_i_email}, 
          cache: false, 
          success: function (data) { 
            $('#div118').html(data); 
            if (response.valid == true) { 
            // remove previous class and add another class 
            } else { 
            // remove previous class and add another class 
            } 
          } 
      }); 
      

      하지만 작동하지 않습니다. 어떻게 해결할 수 있습니까?

      그러나 #의 div118에서 결과 데이터를 보여줍니다 {"invalid":true} 또는 {"valid":true}

      편집 : 내가

  • +0

    1)'$ response'는 JSON가 아닌 배열입니다. 나중에 json_encode로 JSON으로 데이터를 인코딩 *하고 있습니다 (희망 사항). 2)'response'는 자바 스크립트 코드에 정의되어 있지 않습니다. 아마'데이터 '를 사용하고 싶습니다. 3) 먼저 JSON을 JavaScript 객체로 파싱해야 할 수도 있습니다. * 편집 : * 네, 확실히해야합니다. –

    +0

    @burey 데이터가 div 오른쪽에 표시됩니다. 따라서 JSON.parse (data) .valid로 액세스 할 수 있어야합니다. console.log (데이터)를 실행하고 크롬에서 무엇을 말하는지 확인하십시오. 그것이 객체라고 말하면 직접 data.valid를 수행 할 수 있습니다. 전체 텍스트가 표시되면 JSON 구문을 수행해야합니다. 하지만 ajax 호출에서 데이터 유형을 지정하면 여분의 JSON.parse가 줄어 듭니다. – PSL

    +0

    'div'가 표시된다는 사실. '{ "valid": true}'대신 [object object]는 jQuery가 적절한 내용 유형 헤더를 찾지 못했음을 나타내며 응답을 구문 분석하지 않았습니다. 뭔가 잘못되었을 수도 있습니다 ... –

    답변

    1

    responseheader('Content-Type: application/json');이 코드에 정의되지 않은 사용을 언급하는 것을 잊었다.

    $.ajax({ 
        // ... 
        dataType: 'json', // <- let jQuery know which data format to expect 
        success: function (data) { // <- you define data here 
         if (data.valid) { // <- data, not response; no need to compare 
          // remove previous class and add another class 
         } else { 
          // remove previous class and add another class 
         } 
        } 
    }); 
    

    또는 더 나은 : 당신은 또한 자바 스크립트 객체로 응답합니다 (JSON)을 구문 분석, 또는 jQuery를 당신을 위해이 일을 알게해야 jQuery를 (및 기타 서비스) 데이터 형식을 알아낼 수 PHP에서 set the appropriate content type header for JSON 인 경우 응답이 전송됩니다.

    +0

    데이터 유형이 'json'이 아니어야합니까? – PSL

    +0

    그래! 감사! - 어떤 이유로 든 –

    +0

    이 작동하지 않습니다. – burey

    관련 문제