2016-11-19 45 views
0
“POST”数据

jQuery的AJAX不是传递PHP

function getHash() { 
 
    alert('Debug me gethash'); 
 
    return localStorage.getItem('hash'); 
 
} 
 

 
function getUser() { 
 
    return getHash().split('~')[0]; 
 
} 
 

 
function setHash(data) { 
 
    alert('Debug sethash'); 
 
    localStorage.setItem('hash', data); 
 
} 
 

 
function doAction(action, params, callback) { 
 
    alert('Debug me 3'); 
 
    $.post('../core.php?action=' + action + '&hash=' + getHash(), params, callback); 
 
} 
 

 
function register() { 
 
    alert('debug1'); 
 
    doAction('register', { 
 
    username: $('#register_user').val(), 
 
    ref: fromUrl('ref') 
 
    }, function(data) { 
 
    alert('Debug me 2'); 
 
    var json = JSON.parse(data); 
 
    if (json.hasOwnProperty('error')) 
 
     alert(json.error); 
 
    else 
 
     ready(json); 
 
    }); 
 
}
$db=new PDO('mysql:dbname=name;host=localhost', 
 
'', 
 
'', 
 
array(PDO::ATTR_ERRMODE=> PDO::ERRMODE_EXCEPTION)); 
 
switch ($_GET['action']) { 
 
    case'register': if(isset($_POST['username'], $_POST['ref'])) { 
 
    $username=$_POST['username']; 
 
    if(strlen($username) < 3) error('Username is too short!'); 
 
    if(strlen($username) > 10) error('Username is too long!'); //N 
 
    if(!preg_match('/^[a-zA-Z0-9_]+$/', $username)) error('Username contains invalid characters!'); 
 
    $ret=$db->prepare("SELECT * FROM users WHERE username=?"); 
 
    $ret->execute(array($username)); 
 
    if($ret->fetch()) error('Username already exists!'); 
 
    $hash=md5(uniqid("", true)); 
 
    $db->prepare("INSERT INTO users(username,hash,ontime,referral) VALUES(?,?,?,?)")->execute(array($username, $hash, time(), (int)$_POST['ref'])); 
 
    die(json_encode(array('hash'=>$username.'~'.$hash))); 
 
    } 
 
    ; 
 
}
<h2 class="dialog_text">Register</h2> 
 
<input type="text" class="form-control-modal" placeholder="Username" id="register_user"> 
 
<button type="button" class="btn btn-modalbuy" class="close" onclick="register()">Sign Up</button> 
 
<div class='smalltext'>By accessing the site I verify that I am at least 18 years old and have read the Terms & Conditions.</div> 
 
<br> 
 
<hr>//PHPCOde $db = new PDO('mysql:dbname=name;host=localhost', '', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); switch ($_GET['action']) { case 'register': if(isset($_POST['username'],$_POST['ref'])) { $username = $_POST['username']; if(strlen($username) 
 
< 
 
3) error('Username is too short!'); if(strlen($username)>10) error('Username is too long!'); //N if(!preg_match('/^[a-zA-Z0-9_]+$/',$username)) error('Username contains invalid characters!'); $ret = $db->prepare("SELECT * FROM users WHERE username=?"); $ret->execute(array($username)); if($ret->fetch()) error('Username 
 
    already exists!'); $hash = md5(uniqid("",true)); $db->prepare("INSERT INTO users(username,hash,ontime,referral) VALUES(?,?,?,?)")->execute(array($username,$hash,time(),(int)$_POST['ref'])); die(json_encode(array('hash'=>$username.'~'.$hash))); }; }

我得到POST http://localhost/core.php?action=register&hash=null 500(内部服务器错误)和XHR加载完成:POST “http://localhost/core.php?action=register&hash=null”。

不太确定它的服务器或代码。但我似乎无法让它工作。今天花了4个小时尝试。

+0

一个'时,有一个错误,但错误报告是500内部服务器Error'出现关闭。把这个放在你的PHP中:'ini_set('display_errors',1);' – Nytrix

回答

1

如果代码有严重错误但错误报告已关闭,则会显示。

打开错误通过php文件报告:

ini_set('display_errors', 1); 

打开错误通过htacces文件报告:

php_flag display_errors 1 
+0

函数寄存器(){doAction('register',{username:$('#register_user').val(),ref:fromUrl(' REF ')},功能(数据){ VAR JSON = JSON.parse(数据); 如果(json.hasOwnProperty(' 错误')) 警报(json.error); 否则 就绪(JSON); }); }未捕获的SyntaxError:意外的JSON输入结束任何想法为什么? at JSON.parse() –

+0

第二次拼错'function'。我真的不能从一些传入评论的随机代码中看到。 – Nytrix

+0

@JamesAlton如果我解决了您的问题,请检查我的解决方案作为答案。 – Nytrix