2

を使用してColdfusion8います。

データベースに書き込み/取得する必要があるアイテム番号 (ランダムな 35 文字の文字列) を含む Ajax リクエストを受け取りました。

問題は、次のような数字のみを渡す場合です。

 23456

Coldfusion の出力:

 23456.0

文字列に文字が含まれている場合は、A12345正しく機能します。

いくつかのコード (ただし、これは何が機能していないかを示していません:

Javascript:

var btn = $(this).find('input'),
    putOnRack = btn.jqmData('index'),
    form = "",
    service = "../services/handler.cfc",
    method = "process",
    returnformat = "JSON",
    targetUrl = "",
    formdata = "form_submitted=store_selection&artikelnummer="+putOnRack+"&method="+method+"&returnformat="+returnformat;

    // pass to AJAX
    ajaxFormSubmit( form, service, formdata, targetUrl, successHandler, "no", "", returnformat, "" );

var ajaxFormSubmit = 
    function ( form, service, formdata, targetUrl, successHandler, dataHandler, errorHandler, returnformat, type ){
    $.ajax({
        async: false,
        type: type == "" ? "get" : type,
        url: service,
        data: formdata,    
        dataType: returnformat,
        success: function( objResponse ){}, 
        error: function (jqXHR, XMLHttpRequest, textStatus, errorThrown) {}

Coldfusion ではprocess、フォーム サーバー側を検証してビルドする を介してこれを渡します。次に、データベース ハンドラに渡します。

 `LOCAL.form` 

渡されたすべての情報を含むオブジェクトなので、私のアイテム番号はLOCAL.form.artikelnummer

これを出力すると:

 cfdump output="e:\dump.txt" label="catch" var="#LOCAL.form.artikelnummer#">

数字のみの文字列が処理されます.0

質問
AJAX 経由で Coldfusion にパラメーターを渡すときに、最終的に数値ではなく varchar になるようにするにはどうすればよいですか?

4

3 に答える 3

2

NumberFormat( )を使用できます。例:

NumberFormat('123.0', '99999')// returns '123'

2 番目のパラメーターは、番号の表示方法を決定するマスクです。

于 2012-12-03T08:46:51.743 に答える
1

ブロック<cfqueryparam ...>内で使用し、 を指定します。これにより、SQL インジェクション攻撃も防ぐことができます (エンド ユーザーからの生データをデータベースに渡してはいけません)。cfqueryCFSQLType="CF_SQL_INTEGER"

推奨読書:

  1. cfqueryparam (Coldfusion 8)
  2. ColdFusion アプリケーションを SQL インジェクション攻撃から保護する
于 2012-12-03T08:17:29.540 に答える
0

CF では INT 関数を使用することもできます。

int(123.456) <!--- returns 123 --->

INT は、他の言語の床 (切り捨て) のようなものです。

INT()を参照してください

int または numberFormat を使用する前に、結果が数値かどうかを確認する必要があります。そうしないと、The value cannot be converted to a numberエラーが発生します。

<cfif isNumeric(yourValue)>
  <cfset yourValue = int(yourValue)>
</cfif>
于 2012-12-03T15:19:11.603 に答える