2012-02-01 21 views
1

私はこのJQueryリモート検証の問題で日数を検索していたので、この記事をオンラインで投稿したかったのです。私はそれを働かせることはできません。Jqueryの検証リモートチェックがユニークでない

:私はURLにクエリを使用してテストURLを持っているし、レコード数は、1つまたは複数の

あると、それはこれが私のjQueryの検証コードであるに応じて、偽と真を返すように私のPHPコードが正しいと思います

// validate form and submit var $j = jQuery.noConflict(); $j(document).ready(function(){ $j("#myform").validate({ rules: { ord_ref: { required: true, minlength: 12, remote: "check_ord_ref.php" }, messages: { ord_ref: { remote: "Order Number Does Not Exist" } } } }); }); 

これは

$colname_rscheck_ord_ref = "-1"; 
if (isset($_GET['ord_ref'])) { 
    $colname_rscheck_ord_ref = (get_magic_quotes_gpc()) ? $_GET['ord_ref'] : addslashes($_GET['ord_ref']); 
} 
mysql_select_db($database_conn, $conn); 
$query_rscheck_ord_ref = sprintf("SELECT ref_ord FROM orders WHERE ref_ord = '%s'", $colname_rscheck_ord_ref); 
$rscheck_ord_ref = mysql_query($query_rscheck_ord_ref, $conn) or die(mysql_error()); 
$row_rscheck_ord_ref = mysql_fetch_assoc($rscheck_ord_ref); 
$totalRows_rscheck_ord_ref = mysql_num_rows($rscheck_ord_ref); 
if($totalRows_rscheck_ord_ref < 0){ 
     $valid = 'false'; 
     } else { 
     $valid = 'true'; 

     } 
     echo $valid; 

遠隔ページ "check_ord_ref.php" のための私のPHPコードで誰かが、あなたは、パズルを解決することができますしてくださいJQuery 1.5.2minを使用して自分のためにと、誰持つ問題

  1. は、リモート機能なし

答えて

2

OK OK検証しますので、私は何もPHPの専門家だが、私は知っているjQueryの検証

応答がはJSONとして評価され、有効な要素のための条件を満たしている必要があります。リモート検証メソッドから次の結果を期待S、 とすることができる任意の代わりとして評価されたエラーメッセージとして解析さ"true"又は"false"(引用符に注意)の値をもたらすために起こっているダウン送信無効要素

ため、偽未定義またはnull booleanプリミティブ。

PHPの部分に戻ると、私はだと思います。おそらくjson_encodeにブール型プリミティブを使用するべきです。私はPHPでこれを行う方法はかなりわからないんだけど、私はそれがこのようなものになるだろうと信じて:

$colname_rscheck_ord_ref = "-1"; 
if (isset($_GET['ord_ref'])) { 
    $colname_rscheck_ord_ref = (get_magic_quotes_gpc()) ? $_GET['ord_ref'] : addslashes($_GET['ord_ref']); 
} 

mysql_select_db($database_conn, $conn); 
$query_rscheck_ord_ref = sprintf("SELECT ref_ord FROM orders WHERE ref_ord = '%s'", $colname_rscheck_ord_ref); 
$rscheck_ord_ref = mysql_query($query_rscheck_ord_ref, $conn) or die(mysql_error()); 
$row_rscheck_ord_ref = mysql_fetch_assoc($rscheck_ord_ref); 
$totalRows_rscheck_ord_ref = mysql_num_rows($rscheck_ord_ref); 

if($totalRows_rscheck_ord_ref < 0){ 
    $valid = false; // <-- Note the use of a boolean primitive. 
} else { 
    $valid = true; 
} 

echo json_encode($valid); 
+0

こんにちは、あなたのポストとの時間をありがとう。私はjson_encodeを使ってレスポンスを返す他のフォーラムについても読んでいます。私は私のPHPコードでそれを変更しましたが、それはまだ動作しません。 – ZeePee

+0

@ ZeePee:ブールプリミティブを使用していますか?つまり、trueの代わりにtrueを返します。 –

+0

こんにちは私は両方ともこれを試しましたが、現在のコードです:echo false; } else {echo true; }私も$ valid = falseを試しました。 } else {$ valid = true; }エコーjson_encode($有効); – ZeePee

0

この問題は、リモート検証スクリプト作成を悩ませているようだと問題にjQueryのドキュメントが明確に欠けています。

jQuery 1.5.2を使用していることがわかりました:私は理解していることから、経験豊富なユーザーから、$ _REQUESTでリモートスクリプトに送信されるjQueryコールバックを1.4以降のバージョンで使用する必要があり、 true "または" false "をSTRINGとして返します。 (私はjQueryの1.7.1を使用しています)複数のフォームに取り組んで確認ここでの例では、次のとおりです。

if($totalRows_rscheck_ord_ref < 0){ 
    header('Content-type: application/json'); 
    $valid = 'false'; // <---yes, Validate is expecting a string 
    $result = $_REQUEST['callback'].'('.$check.')'; 
    echo $result; 
} else { 
    header('Content-type: application/json'); 
    $valid = 'true'; // <---yes, Validate is expecting a string 
    $result = $_REQUEST['callback'].'('.$check.')'; 
    echo $result; 
} 

私はランダムに、(答えのセクションで)この回答hereを発見し、以来、私の髪を引っ張っ停止しています。これが誰かを助けることを望みます。

0

上記のAndrew Whitakerの回答に追加するには、レスポンスが厳密にJSONであり、返される他のコンテンツタイプがないことを確認する必要があります。私はスクリプトで同じ問題を抱えていたので、すべてが正しく設定されているように見えました - json_encode()を使用していました。 FirebugのNETタブを使ってトラブルシューティングをしたところ、JSONからtext/htmlにデータを変換するブラウザにPHPの通知が送り返されていることを確認できました。私がエラーをオフにした後、すべてが順調でした。

0

//check_validate.php

<?php 

// some logic here 

echo json_encode(true); 
?> 
+1

これはどのように使うべきですか?現在のところ、このスニペットは、与えられた答えにはほとんど価値がありません。 – EWit

関連する問題