2016-06-12 3 views
1

가능한 한 간단하게 설명하려고합니다. 이 자바 스크립트에 연결Javascript는 PHP의 스위치 케이스를 사용하여 mysql 데이터베이스에서 데이터를 검색합니다.

<fieldset class="ui-field-contain"> 
    <select name="localita" id="localita" onchange="cambia()"> 
     <option value="Tutti">Tutti</option> 
     <option value="Location 1">Location 1</option> 
     <option value="Location 2">Location 2</option> 
     <option value="Location 3">Location 3</option> 
    </select> 
</fieldset> 

:

나는이 HTML을

$localita = $_POST['localita']; 
switch ($localita) { 
    case "Location 1" : 
     $sql = "my query"; 
     $result = mysqli_query($con, $sql) or die("Query error: " . mysqli_error()); 
     $records = array(); 
     while ($row = mysqli_fetch_assoc($result)) { 
      $records[] = $row; 
     } 
     mysqli_close($con); 
     echo json_encode($records); 
     break; 
    case "Location 2" : 
     //my stuff 
     break; 
    case "Location 3" : 
     //my stuff 
     break; 
    default : 
    //mystuff 
} 

그리고 마지막으로 내가이 아약스로 검색이 PHP 파일에 연결되어

<script> 
    function cambia() { 
     $.post("switch_localita.php", { 
      localita : $("#localita").val() 
     }).done(function(data) { 
     }); 
    } 
</script> 

/json :

<script type="text/javascript"> 
    $.ajax('switch_localita.php', { 
     dataType : "json", 
     jsonp : "jsoncallback", 
     method : 'post', 
     contentType : 'application/json', 
     success : function(data, status) { 
      $.each(data, function(i, item) { 
       //my stuff 
      }); 
     }, 
     error : function(xhr, d, s) { 
      $('#output').empty().html(s); 
     } 
    }); 
</script> 

질문은 다음과 같습니다. 어떻게이 모든 작업을 수행합니까? 필자는 선택 내용이 변경되면 (다른 음성이 선택됨) 양식이 제출되고 PHP 파일에 저장된 스위치 케이스에서 올바른 쿼리를 검색합니다. 또한 표준 쿼리는 페이지를 열 때 표시되므로 (페이지를 열면 이미 음성을 선택하지 않았지만 쿼리는 어쨌든로드됩니다.)

감사합니다.

+0

2 개의 ajax 요청이 필요하지 않습니다. '$. post '는 간단히'$ .ajax'의 약식이고 똑같은 일을합니다. 여기에 복잡한 것을 끝내는 것 같습니다. 페이지로드에 관해서는 ... $ _POST가 비어 있는지 단순히 확인하십시오. 귀하의 전체 흐름 프로세스는 여전히 약간 막연하지만 – charlietfl

+0

내 애플 리케이션은 자바 스크립트를 읽습니다. 그래서 자바 스크립트를 통해 데이터를 보내고, PHP로 정교하게 만들고, 아약스를 통해 정교하고 HTML로 인쇄 된 json 인코딩 된 값을 반환해야합니다. lol – Tony33

+0

이것은 처음 요청을 한 직후에 두 번째 요청을해야하는 논리/프로세스 흐름 문제와 비슷합니다. 아무 것도 변경되지 않아서 이유 서버가 동시에 두 가지를 처리 ​​할 수 ​​없습니다. – charlietfl

답변

1

heson 업데이트 된 json encode 및 $ get ajax가 있습니다.

내가 데이터를 인쇄하기위한 사업부를 추가하려면 HTML

<fieldset class="ui-field-contain"> 
    <select name="localita" id="localita""> 
     <option value="Tutti">Tutti</option> 
     <option value="Location 1">Location 1</option> 
     <option value="Location 2">Location 2</option> 
     <option value="Location 3">Location 3</option> 
    </select> 
</fieldset> 
<div class="the-return"></div> 

입니다.

이 당신의 PHP는 당신의 아약스

$(function(){ 
    $("#localita").change(function() { 
     var sVal = $(this).val(); 
     if (sVal !== "NA") { // I am assuming you don't want to make an ajax call when the value is 'NA'! 
      $.getJSON("response.php", {localita: $(this).val()}, function(result) { 
       $(".the-return").html(
        "Your Location : " + result //this is where u decide how ur data going to be printed 
       ); 
       alert(result); 
      }); 
      //by the way $(this).val() = id1|id2|id3 
     } 
    }); 
}) 

입니다. 이 코드는이 질문에 대답을 기반으로

<?php 

$localita = $_GET['localita']; 
switch ($localita) { 
    case "Location 1" : 
     $sql = "my query"; 
     $result = mysqli_query($con, $sql) or die("Query error: " . mysqli_error()); 
     $records = array(); 
     while ($row = mysqli_fetch_assoc($result)) { 
      $records[] = $row; 
     } 
     mysqli_close($con); 
     echo json_encode($records); 
     break; 
    case "Location 2" : 
     //my stuff 
     break; 
    case "Location 3" : 
     //my stuff 
     break; 
    default : 
    //mystuff 
} 

?> 

= JSON not working with OnChange event

는 당신을 위해 작동 바랍니다.

+0

나는 자바 스크립트에서도 결과를 얻어야한다. 내 애플 리케이션 (jquery 모바일 일하고 있어요) 이후 자바 스크립트를 읽습니다 사용할 수 없습니다. 그래서 나는 json으로 인코딩 된 결과를 되돌려 받고 ajax를 통해 그것을 얻어야한다. – Tony33

+0

자바 스크립트로 전송됩니다. PHP는 백엔드에서 처리되고 자바 스크립트는'success : function (html)' –

+0

에 결과를 게시합니다. PHP 스위치의 경우 $ data 대신 $ localita가 있습니다. 맞습니까? – Tony33

관련 문제