Javascript 带有json格式数据的AJAX脚本不工作
我的完整脚本如下Javascript 带有json格式数据的AJAX脚本不工作,javascript,php,jquery,ajax,codeigniter,Javascript,Php,Jquery,Ajax,Codeigniter,我的完整脚本如下 <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> <script src="https://code.jquery.com/jquery-3.1.1.slim.min.js" integrity="sha384-A7FZj7v+d/sdmMqp/nOQwliLvUsJfDHW+k9Omg/a
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="https://code.jquery.com/jquery-3.1.1.slim.min.js" integrity="sha384-A7FZj7v+d/sdmMqp/nOQwliLvUsJfDHW+k9Omg/a/EheAdgtzNs3hpfag6Ed950n" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/tether/1.4.0/js/tether.min.js" integrity="sha384-DztdAPBWPRXSA/3eYEEUWrWCy7G5KFbe8fFjk5JAIxUYHKkDx6Qin1DkWx51bBrb" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/js/bootstrap.min.js" integrity="sha384-vBWWzlZJ8ea9aCX4pEW3rVHjgjt7zpkNpZk+02D9phzyeVkE+jo0ieGizqPLForn" crossorigin="anonymous"></script>
<script type="text/javascript">
$(window).on('load',function(){
$('#myModal').modal('show');
});
</script>
<script>
$( document ).ready(function () {
$("#vote").click(function (e) {
var poll_id = $('input[name=pollID]', '#myForm').val();
var poll_option_id = $('input[name=voteOpt]:checked', '#myForm').val() ;
//alert(poll_id + "AND" + poll_option_id);
$.ajax({
type: "POST",
url: "http://localhost/poll/index.php/form/poll",
data: {poll_id: poll_id, poll_option_id: poll_option_id},
dataType: "json",
success: function(data) {
alert(data);
}, error: function() {
alert("ERROR");
}
});
});
});
</script>
现在的问题是,modal在页面加载时可以完美地执行。但是ajax不起作用,成功部分也没有执行,错误部分也没有。另外,在ajax之前取消注释警报时,会发出正确的警报值。我想不出这个错误。
请帮助我可以看到包含了许多javascript库。很肯定其中有些是相互矛盾的。 在$(document.ready()之前尝试此操作:- 在查看表单控制器代码之后,我可以看到您只是返回了一个文本。所以ajax数据类型应该是HTML而不是json。dataType参数用于定义返回值的类型。 我只能在你的代码中看到这一错误点。您的控制台响应状态也很好,这意味着数据类型是错误的 dataType=服务器响应的预期数据类型
dataType:'html'
我可以看到包含了很多javascript库。很肯定其中有些是相互矛盾的。 在$(document.ready()之前尝试此操作:- 在查看表单控制器代码之后,我可以看到您只是返回了一个文本。所以ajax数据类型应该是HTML而不是json。dataType参数用于定义返回值的类型。 我只能在你的代码中看到这一错误点。您的控制台响应状态也很好,这意味着数据类型是错误的 dataType=服务器响应的预期数据类型
dataType:'html'
例如。 请看,您可以检查脚本是否以这种方式发送post值 在控制台>网络选项卡中。您可以查看哪些post值作为post发送 现在我有了PHP Codeigniter中的代码,对我来说,下面的代码工作得很好
$("#username").keyup(check_if_username_exists);
function check_if_username_exists() {
var username = $("#username").val();
var sRet = false;
$.ajax(
{
type:"post",
async: false,
url: "<?php echo site_url('distributor/tenant/check_username_exists'); ?>",
data:{ username:username},
success:function(response)
{
var parent_fieldset = $("#username").parents('fieldset');
$("#username").parent().addClass('has-error');
if (response == "true")
{
$('#span').html('<span style="color: #0fa7b5;">'+"Login Username"+"</span>");
$("#username").removeClass('input-error');
$("#username").parent().removeClass('has-error');
console.log('Success! This Username is available');
hideToastr();
sRet = true;
}
else
{
show_error("Error","Oops! This Username is already taken");
$("#username").addClass('input-error');
$('#span').html('<span style="color:red;">Username already Exists!</span>');
console.log('Oops! This Username is already taken');
sRet = false;
}
}
});
console.log("End Of Username Exists " + sRet);
return sRet;
}
更新2:
public function poll() {
$polldata = json_decode($_POST);
echo $polldata;
}
public function poll() {
$polldata = json_decode($_POST);
echo $polldata;
$pollid = $polldata->pollID;
$voteData = array(
'poll_id' => $pollid,
'poll_option_id' => $polldata->pollID->voteOpt
);
$voteSubmit = $this->modal->vote($voteData);
if($voteSubmit){
echo 'Your Vote Has Been Submitted successfully.';
}else{
echo 'You Had Already Voted.';
}
}
现在对于您的控制器,我看不出您在哪里编码或解码json数据。
如果要将值作为JSON POST发送到控制器,则必须对其进行解码
第一个检查是您正在控制器中获取JSON数据。
如果工作正常,则尝试第二步。
第1步:
public function poll() {
$polldata = json_decode($_POST);
echo $polldata;
}
public function poll() {
$polldata = json_decode($_POST);
echo $polldata;
$pollid = $polldata->pollID;
$voteData = array(
'poll_id' => $pollid,
'poll_option_id' => $polldata->pollID->voteOpt
);
$voteSubmit = $this->modal->vote($voteData);
if($voteSubmit){
echo 'Your Vote Has Been Submitted successfully.';
}else{
echo 'You Had Already Voted.';
}
}
第二步:
public function poll() {
$polldata = json_decode($_POST);
echo $polldata;
}
public function poll() {
$polldata = json_decode($_POST);
echo $polldata;
$pollid = $polldata->pollID;
$voteData = array(
'poll_id' => $pollid,
'poll_option_id' => $polldata->pollID->voteOpt
);
$voteSubmit = $this->modal->vote($voteData);
if($voteSubmit){
echo 'Your Vote Has Been Submitted successfully.';
}else{
echo 'You Had Already Voted.';
}
}
如果您遇到任何问题,请告诉我。例如。 请看,您可以检查脚本是否以这种方式发送post值 在控制台>网络选项卡中。您可以查看哪些post值作为post发送 现在我有了PHP Codeigniter中的代码,对我来说,下面的代码工作得很好
$("#username").keyup(check_if_username_exists);
function check_if_username_exists() {
var username = $("#username").val();
var sRet = false;
$.ajax(
{
type:"post",
async: false,
url: "<?php echo site_url('distributor/tenant/check_username_exists'); ?>",
data:{ username:username},
success:function(response)
{
var parent_fieldset = $("#username").parents('fieldset');
$("#username").parent().addClass('has-error');
if (response == "true")
{
$('#span').html('<span style="color: #0fa7b5;">'+"Login Username"+"</span>");
$("#username").removeClass('input-error');
$("#username").parent().removeClass('has-error');
console.log('Success! This Username is available');
hideToastr();
sRet = true;
}
else
{
show_error("Error","Oops! This Username is already taken");
$("#username").addClass('input-error');
$('#span').html('<span style="color:red;">Username already Exists!</span>');
console.log('Oops! This Username is already taken');
sRet = false;
}
}
});
console.log("End Of Username Exists " + sRet);
return sRet;
}
更新2:
public function poll() {
$polldata = json_decode($_POST);
echo $polldata;
}
public function poll() {
$polldata = json_decode($_POST);
echo $polldata;
$pollid = $polldata->pollID;
$voteData = array(
'poll_id' => $pollid,
'poll_option_id' => $polldata->pollID->voteOpt
);
$voteSubmit = $this->modal->vote($voteData);
if($voteSubmit){
echo 'Your Vote Has Been Submitted successfully.';
}else{
echo 'You Had Already Voted.';
}
}
现在对于您的控制器,我看不出您在哪里编码或解码json数据。
如果要将值作为JSON POST发送到控制器,则必须对其进行解码
第一个检查是您正在控制器中获取JSON数据。
如果工作正常,则尝试第二步。
第1步:
public function poll() {
$polldata = json_decode($_POST);
echo $polldata;
}
public function poll() {
$polldata = json_decode($_POST);
echo $polldata;
$pollid = $polldata->pollID;
$voteData = array(
'poll_id' => $pollid,
'poll_option_id' => $polldata->pollID->voteOpt
);
$voteSubmit = $this->modal->vote($voteData);
if($voteSubmit){
echo 'Your Vote Has Been Submitted successfully.';
}else{
echo 'You Had Already Voted.';
}
}
第二步:
public function poll() {
$polldata = json_decode($_POST);
echo $polldata;
}
public function poll() {
$polldata = json_decode($_POST);
echo $polldata;
$pollid = $polldata->pollID;
$voteData = array(
'poll_id' => $pollid,
'poll_option_id' => $polldata->pollID->voteOpt
);
$voteSubmit = $this->modal->vote($voteData);
if($voteSubmit){
echo 'Your Vote Has Been Submitted successfully.';
}else{
echo 'You Had Already Voted.';
}
}
如果您遇到任何问题,请告诉我。您的泳池应该是这样的
if($voteSubmit){
echo json_encode(array('msg' =>'Your Vote Has Been Submitted successfully.'));
}else{
echo json_encode(array('msg' =>'You Had Already Voted.'));
}
success: function(data) {
alert(data.msg);
},
error: function() {
alert("ERROR");
}
你的成功应该是这样的
if($voteSubmit){
echo json_encode(array('msg' =>'Your Vote Has Been Submitted successfully.'));
}else{
echo json_encode(array('msg' =>'You Had Already Voted.'));
}
success: function(data) {
alert(data.msg);
},
error: function() {
alert("ERROR");
}
你的游泳池应该是这样的
if($voteSubmit){
echo json_encode(array('msg' =>'Your Vote Has Been Submitted successfully.'));
}else{
echo json_encode(array('msg' =>'You Had Already Voted.'));
}
success: function(data) {
alert(data.msg);
},
error: function() {
alert("ERROR");
}
你的成功应该是这样的
if($voteSubmit){
echo json_encode(array('msg' =>'Your Vote Has Been Submitted successfully.'));
}else{
echo json_encode(array('msg' =>'You Had Already Voted.'));
}
success: function(data) {
alert(data.msg);
},
error: function() {
alert("ERROR");
}
//更改投票功能
public function poll() {
$this->output->set_content_type('application/json');
$pollid = $this->input->post('pollID');
$voteData = array(
'poll_id' => $pollid,
'poll_option_id' => $this->input->post('voteOpt')
);
$voteSubmit =$this->modal->vote($voteData);
if($voteSubmit){
$this->output->set_output(json_encode(array('msg' => 'Your Vote Has Been Submitted successfully.')));
}else{
$this->output->set_output(json_encode(array('msg' => 'You Had Already Voted.')));
}
}
以及Ajax成功回调的一个小变化
success: function(data) {
alert(data.msg);
//option to view data in console log
console.log(data);
},
//更改投票功能
public function poll() {
$this->output->set_content_type('application/json');
$pollid = $this->input->post('pollID');
$voteData = array(
'poll_id' => $pollid,
'poll_option_id' => $this->input->post('voteOpt')
);
$voteSubmit =$this->modal->vote($voteData);
if($voteSubmit){
$this->output->set_output(json_encode(array('msg' => 'Your Vote Has Been Submitted successfully.')));
}else{
$this->output->set_output(json_encode(array('msg' => 'You Had Already Voted.')));
}
}
以及Ajax成功回调的一个小变化
success: function(data) {
alert(data.msg);
//option to view data in console log
console.log(data);
},
你的意思是做一个POST请求,还是这应该是一个GET请求?是的,我想做一个POST请求OK,我还注意到您正在调用localhost上的一个文件-您确定没有发生CORS问题吗?您是否对AJAX的响应进行了json_编码?您从轮询函数返回了什么?您的意思是执行POST请求还是GET请求?是的,我想执行POST请求OK,我还注意到您正在调用localhost上的一个文件-您确定没有发生CORS问题吗?您是否对AJAX的响应进行了json_编码?您从轮询函数返回了什么?您能否找到导致soOkay的原因,这意味着初始错误已解决。代码执行向前推进。检查控制台是否有错误。您可以在这里共享您的HTML吗?关于警告错误,即通过
alert(JSON.stringify(data))代码>它提醒{“readyState”:4,“responseText”:“\r\n\r\n”,“status”:200,“stat”usText“:“OK”}
是的,您是正确的,现在poll\u id和poll\u option\u id值在函数poll中没有被访问,当我尝试使用print\u打印它们的值时,您可以找到导致这些值的原因吗?soOkay,这意味着初始错误已解决。代码执行向前推进。检查控制台是否有错误。您可以在这里共享您的HTML吗?关于警告错误,即通过alert(JSON.stringify(data))代码>它提醒{“readyState”:4,“responseText”:“\r\n\r\n”,“status”:200,“stat”usText“:“OK”}
是的,您是正确的,现在poll_id和poll_option_id值在函数poll中没有被访问,当我尝试使用print_rDid类似的东西打印它们的值时,下面发生了警报错误,即通过警报(JSON.stringify(data))代码>它提醒{“readyState”:4,“responseText”:“\r\n\r\n”,“status”:200,“stat”usText:“OK”}
字符串的json编码在哪里???我猜您使用的是PHP,那么您在哪里对json数据进行编码呢?你能把你的PHP代码发到哪里去编码你的数据吗?我的PHP函数poll已经在哪里提交数据的问题中了。我可以看到,但是你的json编码和解码在哪里??我在我的回复中发布了一个更新,做了类似的事情,并且在警报错误上发生了以下事件,即,通过alert(JSON.stringify(data))代码>它提醒{“readyState”:4,“responseText”:“\r\n\r\n”,“status”:200,“stat”usText:“OK”}
字符串的json编码在哪里???我猜您使用的是PHP,那么您在哪里对json数据进行编码呢?你能把你的PHP代码发到哪里去编码你的数据吗?我的PHP函数poll已经在哪里提交数据的问题中了。我可以看到,但是你的json编码和解码在哪里??我正在更新我的答案