2015-01-06 3 views
1

여전히 아약스와 json에 익숙합니다. 정보 도착PHP AJAX JSON 반복

<input type="text" id="partnerCode" /> 
<input type="button" id="pCodeSearch" value="Search" /> 

나는라는 자바 스크립트 페이지가 global.js 있습니다 :

$('input#pCodeSearch').on('click' , function() 
{ 
    var partnercode = $('input#partnerCode').val(); 
    if($.trim(partnercode) != '') 
    { 
    $.post('api/pCodeSearch.php', {partnercode: partnercode}, function(data) 
    { 
     $('div#partner-data').text(data); 
    }); 
    } 
}); 

내 페이지 addAccount.php이며, 내부, 나는 아래의 입력과 양식을 가지고 위의 코드에서 pCodeSearch.php라는 처리 페이지가 표시됩니다. 여기에 코드입니다 : 당신이 내 위의 자바 스크립트 코드에서 본 바와 같이 위의 모든 코드와

<?php 
    if(isset($_POST['partnercode']) === true && empty($_POST['partnercode']) === false) 
    { 
    require "../include/database.php"; 
    require "../include/sessions.php"; 

    $search = "SELECT FULL_NAME, PARTNER_CODE from partner WHERE PARTNER_CODE = '"htmlentities(stripslashes(trim($_POST['partnercode'])))."'"; 

    $query = mysqli_query($dbc, $search); // $dbc is the connection string 

    if(mysqli_num_rows($query) !== 0) 
    { 
     $out = array(); 
     while($row = $query->fetch_assoc()) 
     { 
     $out[] = $row; 
     } 
     echo json_encode($out); 
     mysqli_free_result($query); 
    } 
    else 
    { 
     echo 'Partner not found'; 
    } 
    } 
?> 

, 나는, DIV 태그라는 # 파트너 데이터에 표시 할 수 있습니다.

하지만이 출력됩니다 :

$.each(data, function(index, item) 
{ 
    $('<div>'). 
    attr('value', item.PARTNER_CODE). 
    text(item.FULL_NAME). 
    appendTo($('#partner-data')); 
}); 

을하지만 아무것도 : 내 자바 스크립트 페이지에서이 작업을 시도

[{"FULL_NAME":"PARTNER SA","PARTNER_CODE":"0000011182"}] 

난 그냥 파트너 SA를 반향 싶습니다 0000011182.

화면으로 돌아갑니다.

나는 가깝다는 것을 알고 있지만, 알아낼 수는 없다.

도와주세요. 대신

답변

2

루프가 올바른 의 해석이 다시 PHP에서 제공되는 JSON 문자열 경우를 보인다.당신은 자동으로 4 매개 변수를 사용하여 그렇게 jQuery를 알 수

var obj = JSON.parse(data); 
$.each(obj, function(index, item) { 
    $('<div>'). 
    attr('value', item.PARTNER_CODE). 
    text(item.FULL_NAME). 
    appendTo($('#partner-data')); 
}); 

: 당신이 당신의 첫 번째 시도에서 문자열을 볼 당신이 필요하므로

, 내 생각, 그것은 구문 분석되지 않는다는 것

먼저 구경에게 올바른 콘텐츠 유형을 설정,

$.post('api/pCodeSearch.php', {partnercode: partnercode}, function(data) { 
    // your original $.each() loop 
    }, 'json'); 
    ^^^^^^^^ here 
+0

고마워요, 좋은 선생님. 귀하가 제공 한 첫 번째 코드를 시도했지만 성공적으로 필요한 데이터를 검색하고있었습니다. 텍스트 부분에서는 text (item.FULL_NAME + ","+ item.PARTNER_CODE)를 수행하고 화면에 둘 다 인쇄 할 수있었습니다. 두 번째 코드 (사용자가 제공 한 코드)가 정확히 무엇인지 확신 할 수 없습니다. 그럼에도 불구하고 그것을 시도 할 것입니다. 고마워요. –

+0

@HoodCoderMan json이 json을 구문 분석하도록 알려주므로'data' 변수가 객체가 될 것이고 여러분이 질문에 게시 한 루프에서 직접 사용할 수 있습니다. – jeroen

0

:

$('div#partner-data').text(data); 

시도 :

$('div#partner-data').text(data.d.["FULL_NAME"]); 
0

내가 메신저 거 : 당신에게 도움을 생각 : $.post는 반환 된 데이터의 유형을 지정합니다 R 그 JSON 응답은 ,,

지금과 같이 쓰기 :

header('Contenty-Type: application/json'); 
echo json_encode($out); 

다음 클라이언트 측 응답 처리 기능은 다음과 같이 표시됩니다 -

$('input#pCodeSearch').on('click' , function() 
{ 
    var partnercode = $('input#partnerCode').val(); 
    if($.trim(partnercode) != '') 
    { 
    $.post('api/pCodeSearch.php', {partnercode: partnercode}, function(data) 
    { 
     // $('div#partner-data').text(data); 
     // Because data value is json, and actually it is returing a array of objects 
     // so 

     for(i = 0; i < data.length; i++){ 

      currect_object = data[i]; 
      $('div#partner-data').append(current_object.FULL_NAME + '\t' + current_object.PARTNER_CODE + '\n'); 
      // here you can also create an templete and can use that like 
      // output_html = mytemplete(current_object.FULL_NAME, current_object.PARTER_CODE); 
      // $('div#partner-data').append(output_html); 

     } // __iterate to all array of objects 

    }); // __post 
    } // __if 
}); 

하고 난 당신이하는 것이 필요하다고 생각하지 않습니다 각각 jquery, 내가 그것을 확인하지 않았기 때문에 몇 가지 syntex 오류가있을 수 있습니다 :) 감사,