2011-08-15 6 views
27

JQUERY, AJAX 및 PHP에서 내 머리를 잡으려고 고심하고 있습니다.JSON을 JQuery AJAX CALL로 반환하는 PHP

이제 PHP를 호출하고 양식 요소를 처리하고 이메일을 보낼 수 있지만 AJAX 로의 반품은 처리하지 않습니다. 항상 error: 선택기가 활성화되고 JSON 반환 목록을 표시하려고하면 정보가 잘못 표시됩니다. 가정 JSON 리턴되어 JSON 데이터

readyState=4 
setRequestHeader=function (a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this} 
getAllResponseHeaders=function(){return s===2?n:null} 
getResponseHeader=function (a){var c;if(s===2){if(!o){o={};while(c=bF.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c} 
overrideMimeType=function (a){s||(d.mimeType=a);return this} 
etc etc 

사람이 바보 어떤 실수 내가 만든하도록 조언 할 수있는 경우

<?php 

touch('phpTouch.txt'); 
// process email 
$email=1; 
if ($email) { 
    $value = array('return' => 1, 'msg1' => 'Message sent OK, we will be in touch ASAP'); 
} else { 
    $value = array('return' => 0, 'msg1' => 'Message Failed, please try later'); 
} 
$output = $json->encode($value); 
echo $output; 

?> 

자바 스크립트와 AJAX

function submitForm(evt) { 
    $('#msgid').html('<h1>Submitting Form (External Routine)</h1>'); 
    if ($('#formEnquiry').valid()) { 
     $("#msgid").append("<h1>(Outside Ready) VALIDATED send to PHP</h1>"); 
      $.ajax({ 
      url: "ContactFormProcess3.php", 
      type: "POST", 
      data: $('#formEnquiry').serialize(), 
      dataType: "json", 
      success: function (data) { 
       alert("SUCCESS:"); 
       for(var key in data) { 
        $('#msgid').append(key); 
        $('#msgid').append('=' + data[key] + '<br />'); 
       } 
      }, 
      error: function (data) { 
       alert("ERROR: "); 
       for(var key in data) { 
        $('#msgid').append(key); 
        $('#msgid').append('=' + data[key] + '<br />'); 
       } 
      } 
     }); 
    } else { 
     $('#msgid').append('<h1>(Outside Ready) NOT VALIDATED</h1>'); 
    } 
    evt.preventDefault(); 
}; 

목록에

PHP , 그러면 나는 가장 감사 할 것입니다.

+0

여기서'$ json'이 정의되어 있습니까? 그냥'json_encode(); '를 사용할 수 있습니다. – Prisoner

+0

어떤 jQuery 버전을 사용하고 있습니까? – marc

+0

@marc Google의 1.6.2 버전 CDN – mcl

답변

78

당신은 PHP에서 이런 식으로 JSON을 반환 할 수 있습니다

에코 캔트 우리 사용자 return 문이없는
header('Content-Type: application/json'); 
echo json_encode(array('foo' => 'bar')); 
+0

팁 주셔서 감사. 나는 노력했고 나는 같은 결과를 얻고있다. 'error :'가 항상 실행되는 이유는 무엇입니까? – mcl

+0

이것은 PHP 스크립트가 오류 – arnaud576875

+0

을 반환한다는 것을 의미합니다. 많은 감사드립니다. 나는 왜 지금 당신이 옳았는지 이해합니다. 이제 고정되어 작동합니다. – mcl

1

는 JSON 개체를 반환하고 아약스 성공 방법에 그 구문 분석.

관련 문제