Php 无法运行AJAX请求

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

我试图通过一个AJAX调用在php文件中设置一个会话变量。但是我得到了一个未定义的索引错误

这是jquery代码:

$('.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;仅仅