【发布时间】:2013-12-02 15:22:32
【问题描述】:
我尝试尽可能简化代码,以便您可以重新创建场景。
我不明白为什么数据插入会失败,因为$('#qcategory').val() 和$('#qtype').val();都是简单的值=1。
ajax 将始终返回带有未定义数据的错误。
不明白json传入php后数据哪里出错了。
这是否意味着一旦将json数据传递到php中,就像我解码并从php返回一样?
print $users->addQ($user) 返回的数据到底是什么?
这几天我一直在纠结这个问题。我一定错过了一些非常重要的事情。请帮我解决这个问题!真的会很感激!
如果你不明白这个问题,请告诉我你不清楚的地方。 如果它因为您无法解决问题而投票,那么投票并没有真正的帮助。谢谢
quiz_controller.js
$(function() {
$(document).on("click", "input#done-add-question", function(){ addQuestion(this); });
});
function addQuestion(element) {
alert('add_question ran!');
$('#indicator').show();
var User = new Object();
User.qcategory = $('#qcategory').val();
User.qtype = $('#qtype').val();
$.ajax({
type: "POST",
url: ".../controller/quiz_controller.php",
dataType: "json",
data: {
//"page":page, //page: value in the url php : currentpage: value in js
action: 'add_question',
user: userJson
},
success: function(data, textStatus) {
alert('add_question works!');
$('#indicator').hide();
},//success: function(data) END
error: function(jqXHR, XMLHttpRequest, textStatus, errorThrown,data) {
alert('add question error!');
alert(" textStatus " + textStatus+" errorThrown " + errorThrown +" XMLHttpRequest " + XMLHttpRequest);
alert("now the data is "+data)
console.log('1'+jqXHR+" |t|t| " +textStatus+" |e|e| " + errorThrown +" |x|x| " + XMLHttpRequest);
console.log('data = '+data);
} //error END
});//$.ajax() END
}
quiz_controller.php
<?php
function __autoload($className){
$classNameUrl="../model/$className.php";
include_once($classNameUrl);
}
$users=new Quiz("localhost","us","pw","equizz");
/*$_POST['action'] ='add_question';
$_POST['user'] ="fs";*/
if(!isset($_POST['action'])) {
print json_encode(0);
print " empty! not ready!";
return;
}
if(get_magic_quotes_gpc()){
$userParams = stripslashes($_POST['user']);
} else {
$userParams = $_POST['user'];
}
switch($_POST['action']) {
case 'add_question':
$user = new stdClass;
$user = json_decode($userParams );
print $users->addQ($user);
break;
}
exit();?>
/model/Quiz.php
<?php
class Quiz {
private $dbh;
public function __construct($host,$user,$pass,$db) {
$this->dbh = new PDO("mysql:host=".$host.";dbname=".$db,$user,$pass);
}
public function addQ($user){
$sth = $this->dbh->prepare("INSERT INTO eq_question1(`qCatID`, `qTypID`) VALUES (?, ?)");
$sth->execute(array($user->qcategory, $user->qtype));
return json_encode($this->dbh->lastInsertId());
}
}//class Quiz END
?>
HTML
<form>
<h1>New Question Settings</h1>
<p>
<label for="qcategory" class="" data-icon="u" > Category </label><br/>
<select id="qcategory" name="qcategory" required="required">
<option value="1">bb</option>
<option value="2">cc Operators</option>
</select>
</p>
<p>
<label for="qtype" class="" data-icon="u" > Type </label><br/>
<select id="qtype" name="qtype" required="required">
<option value="1">ab</option>
<option value="2">cd</option>
>
</select>
</p>
<p class="add-question button">
<input id="done-add-question" type="submit" value="Submit" />
</p>
</form>
Chrome Inspector 返回的错误 console.log
userJson = {"qcategory":"1","qtype":"1"} quiz_controller.js:214
1[object Object] |t|t| |e|e| undefined |x|x| error quiz_controller.js:257
data = undefined
【问题讨论】: