I http://jquery.malsup.com/form/
Benim formu göndermek için jQuery Form Plugin kullanıyorum.
İşte formu göndermek için kullanılan koddur.
var options = {
beforeSubmit: showRequest, // pre-submit callback
success: showResponse, // post-submit callback
url: 'recaptcha.php', // override for form's 'action' attribute
type: 'POST'
};
$('#myform').submit(function() {
$(this).ajaxSubmit(options);
return false;
});
Bu benim test için kullanıyorum şeklidir.
<form action="" method="post" style="margin:10px 0;" id="myform">
<div id="recaptcha_image"></div>
<input type="text" name="recaptcha_response_field" id="recaptcha_response_field" size="30" />
<input type='file' name='filename' size='10' />
First name: <input type="text" id="fname" name="fname" />
<input type="submit" value="Submit" id="submit_button" />
</form>
İşte recaptcha.php içinde kod parçacığını
$results['success'] = true;
$results['msg'] = 'Security code is valid!';
$results['is_fname_empty'] = empty($fname);
$results['is_fname_isset'] = isset($fname);
echo json_encode( $results );
return;
İşte jQuery Form Plugin ile bulunan sorundur.
Ben # fname için hiçbir şey girmeden formu göndermek aşağıdaki gibi Olgu I>, döndürülen sonuç:
"is_fname_empty":true,"is_fname_isset":false
Ben # fname için 0 girerek formu göndermek aşağıdaki gibi Vaka II>, döndürülen sonuç:
"is_fname_empty":true,"is_fname_isset":false
As you can see, it seems that there is no way that I can differentiate what the user enters. I really need to know whether the user DOES NOT enter anything or the user enters 0.
Herkes yardımcı olabilir?
Teşekkür ederim
// Update based on comments from dconde //
, Hello all
Ben kolayca benim sorunu açıklamak böylece ben bir çalışma senaryoyu kurmak.
<html> // testAjaxForm.php
<head>
<script type="text/javascript" src="js/jquery/jquery-1.4.2.js"></script>
<script type="text/javascript" src="js/jquery/jquery.form.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#myForm').submit(function() {
$(this).ajaxSubmit(); // called first
return false;
});
});
</script>
</head>
<body>
<form id="myForm" action="verify.php" method="post">
Name: <input type="text" name="fname" />
<input type="submit" value="Submit Comment" />
</form>
</body>
</html>
<?php // verify.php
require_once('./FirePHPCore/FirePHP.class.php');
require_once('./FirePHPCore/fb.php');
FB::setEnabled(true);
ob_start(); // avoid 'headers already sent error'
FB::log($_POST, '$_POST');
FB::log(strlen($_POST['fname']), 'strlen(name)');
FB::log(empty($_POST['fname']), 'empty(fname)');
FB::log(isset($_POST['fname']), 'isset(fname)');
$is_fname_empty = empty($_POST['fname']) && $_POST['fname'] != 0 && $_POST['fname'] != '0';
FB::log($is_fname_empty, '$is_fname_empty');
?>
Here is the printed information from FirePHP.
1> Ben herhangi bir bilgi girmeden formu gönderin.
$_POST: array('fname'=>'')
strlen(name): 0
empty(fname): TRUE
isset(fname): TRUE
$is_fname_empty: FALSE
2> Ben 0 ile formu gönderin.
$_POST: array('fname'=>'0')
strlen(name): 1
empty(fname): TRUE
isset(fname): TRUE
$is_fname_empty: FALSE
Gördüğünüz gibi biz sadece boş, isset ve dconde tarafından sağlanan yöntemini düşünün, iki başvuru arasında hiçbir fark yoktur. Ancak, benim son deneyler farklı şey üzerinde dize uzunluğu beni fark yaratmaya yardımcı olabilir. Benim için son kez neden çalışmıyor bilmiyorum.
Teşekkür ederim all.