0

私はこのような番号を持っています:

0065921922572

この値をパラメーターとしてJavaScriptの関数に渡します。

データに警告すると、次のように表示されます。

65921922572 (前の00は削除されます)

数値を文字列に変換しようとしましたが、それでも同じ値が得られます。

番号を正しくするにはどうすればよいですか?

javascriptの関数:

//function that creates posts
var postHandler = function(postsJSON,ctr) {
    $.each(postsJSON,function(i,post) {
        ctr++;
        var id = 'post-' + post.code;
        //create the HTML
        $('<div></div>')
        .addClass('post')
        .attr('id',id)

        //generate the HTML
        .html(ctr +  ".&nbsp;&nbsp;&nbsp;<input type='checkbox' name='item" + ctr + 
                  "' id='item" + ctr + "' value='" + post.code +"' onClick='countElem("+ ctr +
                  ")'> <input type='hidden' name='tick"+ ctr +"' id='tick"+ ctr +"'>" + post.code + 
                  " -- " + post.description + "&nbsp;&nbsp;&nbsp;&nbsp;<input type='button' name='del_item' id='del_item'" +
                  " class='but' style='margin-right:100px;' value='x' onclick='delProduct("+ post.code +")'>")

        //inject into the container
        .appendTo($('#posts'))
        .hide()
        .slideDown(250,function() {
            if(i == 0) {
                $.scrollTo($('div#' + id));
            }
        });
    }); 
};

phpの関数:

function get_posts($start = 0, $number_of_posts = 300) {
    $posts = array();
    /* get the posts */
    $query = "SELECT distinct(code), description FROM sales_order, outstanding 
                WHERE sales_order.id = outstanding.so_id AND sales_order.outstanding =  'Y'
                AND outstanding.out_status = '' AND sales_order.status 
                NOT IN ('sta_deliver', 'otw_deliver',  'com_deliver', 'cancel') order by description asc LIMIT $start, $number_of_posts";
    $result = mysql_query($query);
    while($row = mysql_fetch_assoc($result)) {
        //preg_match("/(.*)/",$row['description'],$matches);
        //$row['description'] = strip_tags($matches[1]);
        if($row['code'] != '')
        {
            $strnum = (string)($row['code']);
            $row['code'] = $strnum;
        }
        $posts[] = $row;
    }
    /* return the posts in the JSON format */
    return json_encode($posts);
}   
4

3 に答える 3

0

JSON で、バーコード値が数値ではなく文字列であることを確認してください。

JavaScript が数値として値を取得すると、0 は不要であると見なされ、その後自動的に削除されます。

文字列として:{ "barcode" : "0065921922572" }

数字として:{ "barcode" : 0065921922572 }

于 2012-11-29T03:19:20.920 に答える
0

これを確認しましたか: http://www.webtoolkit.info/javascript-pad.html パディング文字列を処理する最も簡単な方法は、シンプルで明確なパッド関数を作成し、スライスや配列などのトリックを使用しないことだと思いますの上。最先端ではなく、シンプルで信頼性の高い機能が必要な場合があります。

よろしく、 ラドゥ・コソヴェアヌ

于 2012-11-29T02:33:36.290 に答える
0

問題のコードは完全ではないため、何が本当に間違っているのかを判断するのは困難です。サーバーからのリクエストを受け取るコードを見るといいでしょう。魔女の応答は実際に取得され、postHandler に正しく渡されるか、変更されます。

「コード」を強制的に文字列にするかのように、 [{"code":" 00122"}] のような答えが得られます

[{"code":" 00122"}] で $.parseJSON を使用すると、文字列として 00122 が得られます。

ただし、クイック バッチが必要な場合は、コードの前にスペースを追加して、javascript でトリミングできます。

PHP で次のように置き換えます。

$strnum = (string)($row['code']);

$strnum = " " . $row['code'];

そしてjavascriptでは、その後

$.each(postsJSON,function(i,post) {

行を追加

post.code = $.trim(post.code);
于 2012-11-29T21:33:27.350 に答える