Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我的独立php文件如何从ajax post接收数据?_Javascript_Php_Jquery_Html_Ajax - Fatal编程技术网

Javascript 我的独立php文件如何从ajax post接收数据?

Javascript 我的独立php文件如何从ajax post接收数据?,javascript,php,jquery,html,ajax,Javascript,Php,Jquery,Html,Ajax,所以我有3个文件。Header.php、script.js和load_more.php。php是网站上的普通首页,script.js是一个被调用并发出ajax请求的文件。load_more.php是脚本在script.js中调用的php文件 header.php:我获取页面Id($schoolofficialId)并将其放入javascript变量中,以便在script.js ajax数据中访问: <?php // There is more code to this but I do g

所以我有3个文件。Header.php、script.js和load_more.php。php是网站上的普通首页,script.js是一个被调用并发出ajax请求的文件。load_more.php是脚本在script.js中调用的php文件

header.php:我获取页面Id($schoolofficialId)并将其放入javascript变量中,以便在script.js ajax数据中访问:

<?php
// There is more code to this but I do get the page ID and put it into $schoolOfficialId so this does work
    $shcoolOfficialId = $specificSchool[0]["id"];
?>

<!--Down in the <head> of the DOM where scripts get included-->
<script type="text/javascript">
    var schoolId = <?php Print($shcoolOfficialId); ?>
</script>
<script type="text/javascript" src="js/script.js"></script>
load_more.php:由于我的应用程序越来越大,我需要执行switch语句,因此我需要js变量schoolId在header.php中的php代码中为我提供当前页面id或$schoolOfficialId。注意:我不想将load_more.php包含到我的DOM中,因此它是一个独立的php文件:

// including the config file
require('config.php');
//pdo connct for config.php file
$pdo = connect();

var_dump($schoolId);
//this var dump returns NULL
switch ($schoolId) {
  case 1:
     echo "first school";
    break;

  case 2:
     echo "second school";
    break;
  default:
     //this default ends up happening because the $schoolId is NULL
     echo "no school";
    break;
}

您的
schoolId
实际上是
null
,因为您无法在JS中回显php值(就像您所做的那样)。我建议您在html中使用一个隐藏的输入字段,并在输入的
属性中回显该值,然后使用jQuery获取该值

 <!-- In your html code -->
 <input type='hidden' id='schoolOfficialId' value='<?php echo $schoolOfficialId; ?>' />


您需要做的第一件事是确保数据到达php脚本。
load_more.php中执行以下操作:

$school_id = $_POST[schoolId];
var_dump($school_id);
冲洗并重复
最后一个\u id

下一步,如果您为不同的操作使用相同的PHP脚本,您可能需要调整逻辑,并考虑使用这种方法:

在您发送给php脚本的每个ajax调用中,至少包含两个参数,一个称为“action”或类似参数,这将在您的切换案例中使用。
另一个“值”或类似值,可以是您的id。
如果需要,可以添加更多,例如限制和偏移

ajax调用示例:

$.ajax({
url: 'load_more.php',
type: 'POST',
data: {param:schoolId,action:"initialCall"},
});

$.ajax({
url: 'load_more.php',
type: 'POST',
data: {param:last_id, limit:limit,action:"loadMore"},
});
php脚本示例

// including the config file
require('config.php');
//pdo connct for config.php file
$pdo = connect();

// if POST is not set give a default value for $school_id 
if (!isset($_POST['school_id'])) $school_id = 1;
else $school_id = $_POST[school_id];

//same for action
if (!isset($_POST['action'])) $action = 'initialCall';
else $action = $_POST['action'];

switch ($action) {
  case "initialCall":
     //take action for first ajax call;
    break;

  case "loadMore":
     //take action for second ajax call;
    break;
  default:
     //take default action
    break;
}

您的问题不是很清楚loadmore.php文件到底是什么,您的意思是“我不想将其包含到我的DOM中?”php是服务器端代码,DOM是文档对象模型。这通常是在浏览器中转换成节点树的HTML。啊,好的,我明白了,我遵循了你所做的,它工作了,但我仍然有第一个ajax调用相同的错误。My console.log错误显示:未捕获引用错误:未定义学校ID。第16行是数据:{schoolId:schoolId}部分。有什么问题吗?在
schoolId
变量初始化后,您是否遵循了对ajax的调用?console.log
schoolId
以查看它是否具有预期的值。因此,我使用以下
var schoolId=$(“#schoolOfficialId”).val()获取id:
然后使用以下命令将其转换为整数:
var schoolId2=parseInt(schoolId)。我甚至进入我的控制台,检查变量schoolId2,它输出id,但现在我无法将其加载到load_more.php;我的ajax数据如下所示:数据:
{schoolId:schoolId2}
和load_more.php:
if(isset($\u GET['schoolId']){echo“yesss”;}否则{echo“nope”;}
它一直输出nope:(如果使用POST方法通过AJAX发送数据,则只能使用
$\u POST
数组访问数据,而不能使用
$\u GET
。尝试更改它以查看它现在是否已定义。同时,您不需要将
schoolId
转换为整数,因为php将知道要使用的类型。确定my schoolId
var schoolId=$(“#schoolOfficialId”).val()
MyAjax数据:
$.ajax({url:'load_more.php',键入:'POST',数据:{schoolId:schoolId},成功:函数(数据){console.log(“working”);});
和load_more.php:
if(isset($\u POST['schoolId']){echo“yesss”}否则{echo“nope”}
我仍然没有收到任何消息,但console.log日志“正常”:(
$.ajax({
url: 'load_more.php',
type: 'POST',
data: {param:schoolId,action:"initialCall"},
});

$.ajax({
url: 'load_more.php',
type: 'POST',
data: {param:last_id, limit:limit,action:"loadMore"},
});
// including the config file
require('config.php');
//pdo connct for config.php file
$pdo = connect();

// if POST is not set give a default value for $school_id 
if (!isset($_POST['school_id'])) $school_id = 1;
else $school_id = $_POST[school_id];

//same for action
if (!isset($_POST['action'])) $action = 'initialCall';
else $action = $_POST['action'];

switch ($action) {
  case "initialCall":
     //take action for first ajax call;
    break;

  case "loadMore":
     //take action for second ajax call;
    break;
  default:
     //take default action
    break;
}