Php 无法运行AJAX请求
我试图通过一个AJAX调用在php文件中设置一个会话变量。但是我得到了一个未定义的索引错误 这是jquery代码:Php 无法运行AJAX请求,php,jquery,ajax,Php,Jquery,Ajax,我试图通过一个AJAX调用在php文件中设置一个会话变量。但是我得到了一个未定义的索引错误 这是jquery代码: $('.selectcpno li').click(function(){ //Get the value var value = $(this).data("value"); //Put the retrieved value into the hidden input $('i
$('.selectcpno li').click(function(){
//Get the value
var value = $(this).data("value");
//Put the retrieved value into the hidden input
$('input[name=cpnoselected]').val(value);
$.ajax({
type: "post",
url: "../web/cpnoselected.php",
dataType: "text",
data:"{'cpno':'" +value+ "'}",
success: function( data ){
alert("hellosuccess");
document.getElementById("cpno").innerHTML=data;
},
error: function( jqXhr, textStatus, errorThrown ){
alert(value);
console.log( errorThrown );
console.log( jqXhr );
console.log(textStatus);
}
});
});
这是我在php文件中的内容:
<?php
include("../config/config.php");
include("../inc/functions.php");
$cpnoselected= $_POST['cpno'];
$_SESSION['cpno']=$cpnoselected;
echo $cpnoselected;
?>
当我运行它时,我在C:/…/cpnoselected.php中得到了未定义的索引:cpno
请帮助解决此问题更改
data:"{'cpno':'" +value+ "'}",// it needs to be object not string
到
改变
data:"{'cpno':'" +value+ "'}",// it needs to be object not string
到
在C:/…/cpnoselected.php中未定义索引:cpno时会出现此错误,因为您是以字符串而不是JSON的形式发送数据。 这样做会改变
$('.selectcpno li').click(function(){
//Get the value
var value = $(this).data("value");
//Put the retrieved value into the hidden input
$('input[name=cpnoselected]').val(value);
$.ajax({
type: "post",
url: "../web/cpnoselected.php",
dataType: "json",
data:{'cpno':value},
success: function( data ){
alert("hellosuccess");
document.getElementById("cpno").innerHTML=data;
},
error: function( jqXhr, textStatus, errorThrown ){
alert(value);
console.log( errorThrown );
console.log( jqXhr );
console.log(textStatus);
}
});
});
在C:/…/cpnoselected.php中未定义索引:cpno时会出现此错误,因为您是以字符串而不是JSON的形式发送数据。 这样做会改变
$('.selectcpno li').click(function(){
//Get the value
var value = $(this).data("value");
//Put the retrieved value into the hidden input
$('input[name=cpnoselected]').val(value);
$.ajax({
type: "post",
url: "../web/cpnoselected.php",
dataType: "json",
data:{'cpno':value},
success: function( data ){
alert("hellosuccess");
document.getElementById("cpno").innerHTML=data;
},
error: function( jqXhr, textStatus, errorThrown ){
alert(value);
console.log( errorThrown );
console.log( jqXhr );
console.log(textStatus);
}
});
});
您正在更正ajax请求,但发布的数据格式不正确。 您需要将该数据作为对象发送,但将其作为字符串值发送,就像您的代码一样:data:{'cpno':'+value+'} 只需从中删除双引号,就像
data:{'cpno':value}
您正在更正ajax请求,但发布的数据格式不正确。 您需要将该数据作为对象发送,但将其作为字符串值发送,就像您的代码一样:data:{'cpno':'+value+'} 只需从中删除双引号,就像
data:{'cpno':value}
使用isset示例
if (isset($_POST['cpno'])) {
echo "This var is set so I will print.";
}
使用isset示例
if (isset($_POST['cpno'])) {
echo "This var is set so I will print.";
}
您的数据需要是一个对象,而不是JSON字符串,以便以PHP在$\u POST中接受的形式发送数据。或者,如果您坚持在body中以JSON的形式传递数据,然后在PHP中解析JSON,并访问该数组的字段。此外,dataType:json建议服务器返回json,但您只是回显一个字符串,因此这也是需要解决的问题。抱歉,忽略dataType:json,这不是您所做的。您的数据需要是一个对象,而不是一个json字符串,以便以PHP将在$\u POST中接受的形式发送数据。或者,如果您坚持在body中以JSON的形式传递数据,然后在PHP中解析JSON,并访问该数组的字段。此外,dataType:json建议服务器返回json,但您只是回显一个字符串,因此这也是需要解决的问题。抱歉,忽略dataType:json,这不是您所做的。json是一个字符串。PHP希望application/x-www-form-urlencoded用于$\u后期解析,而不是JSON。您的代码是正确的,但您的解释是错误的。@Amadan OP将数据类型设置为文本。是的,这是正确的,并且记住了错误的内容,我告诉OP dataType:json对于他们所做的是不正确的。现在我要告诉您同样的事情:数据类型关注服务器在AJAX响应中返回的内容,而不是发送给服务器的内容。由于OP只是一个简单的字符串回显,因此dataType:text是合适的。如果忽略它也没关系,因为默认的内容类型会提示相同的内容。对于JSON,jQuery将尝试解析它,并可能抛出错误。这与我给你的第一条评论完全不同。JSON是一个字符串。PHP希望application/x-www-form-urlencoded用于$\u后期解析,而不是JSON。您的代码是正确的,但您的解释是错误的。@Amadan OP将数据类型设置为文本。是的,这是正确的,并且记住了错误的内容,我告诉OP dataType:json对于他们所做的是不正确的。现在我要告诉您同样的事情:数据类型关注服务器在AJAX响应中返回的内容,而不是发送给服务器的内容。由于OP只是一个简单的字符串回显,因此dataType:text是合适的。如果忽略它也没关系,因为默认的内容类型会提示相同的内容。对于JSON,jQuery将尝试解析它,并可能抛出错误。这与我第一次给你的评论完全不同。谢谢你的回复。document.getElementByIdcpno.innerHTML=data;这是正确的语句还是应该使用document.getElementByIdcpno.innerHTML=data.cpno;您可以执行$'cpno'.htmldata;谢谢你的回复。document.getElementByIdcpno.innerHTML=data;这是正确的语句还是应该使用document.getElementByIdcpno.innerHTML=data.cpno;您可以执行$'cpno'.htmldata;仅仅