2012-02-01 46 views
1

我想發佈此在線,因爲我一直在尋找這個JQuery遠程驗證問題的日子。我無法讓它工作。我想我的PHP代碼是正確的,因爲我有測試與URL中的查詢網址,並根據與記錄計數是一個或多個Jquery驗證遠程檢查唯一不工作

這是我的jQuery驗證代碼返回假和真:

// 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" 
} 
} 
} 
}); 
}); 

這是我對遠程頁面 「check_ord_ref.php」 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'; 
     } else { 
     $valid = 'true'; 

     } 
     echo $valid; 

請人可以幫你解決難題爲自己和別人有問題

  1. 使用jQuery 1.5.2min
  2. 沒有遙控功能驗證OK

回答

2

好了,我不是PHP的專家,但我知道,jQuery驗證預計從遠程驗證方法如下結果:

的響應評價爲JSON並且必須是有效的元素真S, 並且可以是任何假的,未定義或爲空無效的元素

發送向下"true""false"(注意引號)打算導致值被解析作爲錯誤消息,而不是被評價爲一個布爾原語。

回到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 2012-02-01 21:07:14

+0

@ZeePee:你在使用布爾原語嗎?即'true'而不是''true'' – 2012-02-01 21:10:28

+0

嗨,我已經嘗試這兩個是當前的代碼:echo false; } else {echo true; }我也試過$ valid = false; } else {$ valid = true; } echo json_encode($ valid); – ZeePee 2012-02-02 00:25:40

0

這個問題似乎困擾着遠程驗證腳本編寫者以及對此事的jQuery的文檔顯然缺乏。我注意到你正在使用jQuery 1.5.2:從我的理解(並從體驗中發現),你必須使用jQuery回調函數發送到遠程腳本的$ _REQUEST 1.4之後的版本,並且jQuery期待「真「或」假「作爲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選項卡進行了一些故障排除之後,我可以確定PHP通知被髮送回瀏覽器,將數據從JSON轉換爲text/html。在我解決錯誤之後,一切都很順利。

0

//check_validate.php

<?php 

// some logic here 

echo json_encode(true); 
?> 
+1

這應該如何使用?目前這段代碼對給出的答案几乎沒有任何價值。 – EWit 2014-11-03 09:20:18