jquery - Parsing JSON Request failed using serialize(); -
the code below,
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title></title> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script> <script type="text/javascript"> /*<![cdata[*/ $(document).ready(function () { var value = $('#button input').val(); var name = $('#button input').attr('name'); $('#button input').remove(); $('#button').html('<a href="#" class="csssubmitbutton" rel=' + name + '>' + value + '</a>'); //global vars var form = $("#customform"); var name = $("#name"); var nameinfo = $("#nameinfo"); var email = $("#email"); var emailinfo = $("#emailinfo"); //on blur name.blur(validatename); email.blur(validateemail); //on key press name.keyup(validatename); email.keyup(validateemail); //on submitting $('#button a').on('click', function () { var link = $(this); if(validatename() & validateemail()) { var link = $(this); var str = $("form").serialize(); jquery.ajax({ url : 'load.php', data: str, type: 'get', cache: 'false', datatype: "json", beforesend: function () { link.addclass('loading'); }, success: function(data) { link.removeclass('loading'); $('#button').css('display','none'); $('#success').css('display','block'); }, error:function(x,e){ if(x.status==0) { alert('you offline!!\n please check network.'); } else if(x.status==404) { alert('requested url not found.'); } else if(x.status==500) { alert('internel server error.'); } else if(e=='parsererror') { alert('error.\nparsing json request failed.'); } else if(e=='timeout') { alert('request time out.'); } else { alert('unknow error.\n'+x.responsetext); } } }); return true } else { return false; } }); //validation functions function validateemail(){ //testing regular expression var = $("#email").val(); var filter = /^[a-za-z0-9]+[a-za-z0-9_.-]+[a-za-z0-9_-]+@[a-za-z0-9]+[a-za-z0-9.-]+[a-za-z0-9]+.[a-z]{2,4}$/; //if it's valid email if(filter.test(a)){ email.removeclass("error"); emailinfo.text("valid e-mail please, need log in!"); emailinfo.removeclass("error"); return true; } //if it's not valid else{ email.addclass("error"); emailinfo.text("stop cowboy! type valid e-mail please :p"); emailinfo.addclass("error"); return false; } } function validatename(){ //if it's not valid if(name.val().length < 4){ name.addclass("error"); nameinfo.text("we want names more 3 letters!"); nameinfo.addclass("error"); return false; } //if it's valid else{ name.removeclass("error"); nameinfo.text("what's name?"); nameinfo.removeclass("error"); return true; } } }); /*]]>*/ </script>
my html forum:
<form method="post" action="" id="subscribeform" name="subscribeform"> <fieldset> <label>name: </label><input type="text" class="effect" name="name" id="name" autocomplete="off" > <span id="nameinfo">what's name?</span> </fieldset> <fieldset> <label>email: </label><input type="text" class="effect" name="email" id="email" autocomplete="off" > <span id="emailinfo">valid e-mail please, need log in!</span> </fieldset> <div id="button"> <input type="submit" value="subscribe" name="subscribeform"/> </div> <div id="success"> <strong>data saved successfully.</strong> </div> </form>
its giving me error: parsing json request failed.
this in firebug,
load.php?name=asdf&email=asdf%40gmail.com
this php code
<?php sleep(3); echo parse_str($_post['str']); ?>
suggestions:
- change '
data: str
'data: {str:str}
- change
parse_str($_post['str']);
parse_str($_get['str']);
because, using 'get' method in ajax. parse_str
converts query string in php var
. after,parse_str($_get['str'])
can show user nameecho $name;
- you using json ajax, have return proper json data url, use below example in load.php
then, can name ajax response data.name
<?php parse_str($_get['str']); echo json_encode(array( 'name' => $name )); ?> //or <?php parse_str($_get['str'], $response); echo json_encode($response); ?>
Comments
Post a Comment