2011-03-16 3 views
0

에 나는 오랫동안이 PHP 스크립트를 사용하고이 나의해서 getJSON에 데이터를 반환합니다. 나는 1.2.3 오늘부터와 구문 분석 오류를 당신의 도움해서 getJSON JQuery와는 jQuery를 1.2.3에서 일하고 지금 v1.5.1 던지는 구문 분석 오류

감사

키란

에 대한

<?php 

error_reporting(E_ALL); 
ini_set("display_errors", 0); 
include("conndb.php"); 

    function createoptions($table , $id , $field , $condition_field , $value) 
    { 
     $sql = sprintf("select * from $table WHERE $condition_field=%d ORDER BY $field" , $value); 
     $res = mysql_query($sql) or die(mysql_error()); 
     if (mysql_num_rows($res) > 0) { 
      while ($a = mysql_fetch_assoc($res)) 
      $out[] = "{optionValue: {$a[$id]}, optionDisplay: '$a[$field]'}"; 
      return "[" . implode("," , $out) . "]"; 
     } else 

      return "[{optionValue: -1 , optionDisplay: 'No result'}]"; 
    } 

    if (isset($_GET['country'])) { 
     echo createoptions("state" , "state_id" , "state" , "country_id" , $_GET['country']); 
    } 


    if (isset($_GET['state'])) { 
     echo createoptions("city" , "city_id" , "city" , "state_id" , $_GET['state']); 
    } 

    die(); 
    ?> 

내해서 getJSON 코드가

$.getJSON("select_old.php",{country: '$(this).val()', ajax: 'true'}, function(j){ 
        var options = ''; 
        for (var i = 0; i < j.length; i++) { 
        options += '<option value="' + j[i].optionValue + '">' + j[i].optionDisplay + '</option>'; 
        if(i==0){ 
        populateCity(j[i].optionValue); 
        } 
        } 
        $("select#state").html(options); 
       }).error(function(xhr, ajaxOptions, thrownError) { alert(xhr.statusText); }) 

감사를주는 새로운 버전 v1.5.1을 jQuery를 변경

+0

오류 메시지가 무엇을? 그것은 PHP 또는 JavaScript에서입니까? 또한, 자신의 JSON 문자열을 만드는 대신 [json_encode()] (http://php.net/manual/en/function.json-encode.php)를 사용해야합니다. – Phil

+0

'$ (this) .val()'을 문자열로 만드시겠습니까? 정말로 혼란 스럽거나 검색어 문자열이 실제로'select_old.php? country = $ (this) .val() & ajax = true'입니까? –

+0

더 엄격한 JSON 파서 jQuery 1.4 이상의 사용으로 인해 발생할 수 있습니다. http://www.jsonlint.com/ –

답변

0
{country: '$(this).val()', ajax: 'true'} 

이것은 아마도해야

var country = $(this).val(); 

$.getJSON("select_old.php", { country: country, ajax: 'true' }, function(j) { 

편집 :는 또한, json_encode()에 관한 위 내 댓글 참조 - 예를

$data = array(); 
while ($a = mysql_fetch_assoc($res)) { 
    $data[] = array(
     'optionValue' => $a[$id], 
     'optionDisplay' => $a[$field] 
    ); 
} 
return json_encode($data); 
+0

Thanks Phil,하지만 불행히도 ..이 변경은 작동하지 않았습니다. 제 경우에 json_encode()를 사용하는 방법을 가르쳐 주시겠습니까? – Bujji

+0

@ YiJiang 확실한가요? 내 (파이어 폭스) 테스트는 그렇지 않다는 것을 나타냅니다 – Phil

+0

이것은 [{optionValue : 283, optionDisplay : '벨리즈'}, {optionValue : 284, optionDisplay : '카요'}, {optionValue : 285, optionDisplay : 'Corozal'}, {optionValue : 286, optionDisplay : 'Orange Walk'}, {optionValue : 287, optionDisplay : 'Toledo'}] – Bujji