jquery的ajax處理php返回數組,及json_encode中文問題

來源:互聯網
上載者:User

首先,我想要實這樣一個功能,

當選擇一個下拉框時,讓其它三個文字框得到從伺服器上返回的值!也就把返回的值,賦給那三個文字框!

我用的是jquery+php!! 由於我前台,後台,js,資料庫採用的都是gb2312編碼,所以,走了些彎路!

js代碼:

$("#logname").change(function(){
       
        if($("#logname").val() != ""){
            $.ajax({
                url: "ajax.php?ac=kl_tjyj",
                type:'POST',
                complete :function(){}, //請求完回調的函數,無論成功與失敗都會調用,在success後
                dataType: 'json', //會把回傳的字串自動轉換為json對象!
                data: {logname: $("#logname").val()},
               
                error: function() { alert('Ajax request 發生錯誤');},
               
                success: function(response) {
                   
                $("#yname").attr("value",response.yname);
                $('#zubie').val(response.zubie);
                $('#zhiwu').val(response.zhiwu);
                alert('添加成功!');
   
                }
           });
           
        }
    });   

php代碼如下:

if (get("ac") == 'kl_tjyj') {

    if(isset($_POST['logname'])) {
        $queryString = post('logname');
        $queryString = iconv( 'UTF-8', 'gb2312' , $queryString);//解決傳遞過來的參數為中文亂碼

        if(strlen($queryString) >0) {

            $sql = "select jj_truename,zhiwu,zubie from jj_ren where jjrenname='$queryString' limit 0,1";
            $result = $h->sql($sql);
            if(mysql_num_rows($result)) {
                while($row = mysql_fetch_array($result)){
                    $arr = array ('yname'=>iconv( 'gb2312', 'UTF-8' , $row['jj_truename']),'zubie'=>iconv('gb2312','UTF-8',$row['zubie']),'zhiwu'=>iconv('gb2312','UTF-8',$row['zhiwu']));
                }
                echo json_encode($arr);
            } else {
                echo '<script>alert("沒有找到該人的");</script>';
            }
        } else {
            echo '<script>alert("提交的資料不可為空!");</script>';
        }
    } else {
        echo '';
    }

}

附言:

JSON為何物?我就不重複概念了。通俗的說,它是一種資料的儲存格式,就像PHP序列化後的字串一樣。它是一種資料描述。比如我們將一個數組 序列化後存放,就可以很容易的還原序列化後應用。JSON也是如此,只不過他搭建的是用戶端Javascript和服務端PHP的互動橋樑。我們用PHP生 成JSON後的字串,然後把這個字串傳給前台Javascript,Javascirpt就可以很容易的將其反JSON然後應用。說通俗點,它真的很 像數組。
言歸正傳,如何使用JSON。PHP5.2開始內建了JSON的支援。當然,如果低於這個版本的話,那麼市面上有很多PHP版本的實現,隨便下一個用就OK啦。現在主要是說說PHP內建支援的JSON。很簡單,兩個函數:json_encode和json_decode(跟序列化很像啦)。一個編碼,一個解碼。先看看編碼的使用:

<?php
$arr = array(
    'name' => '陳毅鑫',
    'nick' => '深空',
    'contact' => array(
        'email' => 'shenkong at qq dot com',
        'website' => 'http://www.chenyixin.com',
    )
);
$json_string = json_encode($arr);
echo $json_string;
?>

  很簡單的將一個數組JSON了。需要指出的是,在非UTF-8編碼下,中文字元將不可被encode,結果會出來空值,所以,如果你使用gb2312編寫PHP代碼,那麼就需要將包含中文的內容使用iconv或者mb轉為UTF-8再進行json_encode,

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.