javascript - json从php到jquery相同的功能

标签 javascript php jquery json

我正在使用 Codeigniter。

我需要访问两次 php 函数,但第一次我不必回显 json_encode 数组......我应该在第二次从 js 文件调用它时回显它。我该怎么做?

所以,php 文件:

function filter(){
    if (function call is not from js file ) {
      //using $_POST variable to get info from the form
      dont echo json
    }elseif (function call is from the js file) {
      echo json_encode($data); 
     //but $data should be $_POST info too, but in this case $_POST WOULD 
     //BE EMPTY and I'm sending no data to ajax
    }
}

来自js文件:

$.ajax({        
    type: "GET",
    url: "filter",       
    dataType: 'json',

   success: function(data){
     alert(data); },

   error: function(data){
     alert('error'); }

最佳答案

您可以进行一些搜索,找到许多不同的选项来使用 PHP 检测 AJAX 请求。例如:

一旦确定它来自 AJAX,您就可以传递像 pass 这样的参数,并根据哪个 pass 为其分配 1 或 2。不过仍然很老套。

真正的问题是这个函数做得太多了。如果两个函数做不同的事情,那么你应该有两个不同的函数。当您开始引入这样的条件时,您就违反了单一职责原则(SOLID 的一部分),并要求将来出现问题。

但是,为了完整起见,您可以执行类似的操作,并且在大多数情况下它应该检测 AJAX 请求:

if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
    // This is PROBABLY an AJAX request
    if ($_POST['pass'] == 1) {
        // First Pass
    } else if ($_POST['pass'] == 2) {
        // Second pass
    }
}

注意:这可以由客户端操纵,因此不要依赖它来驱动任何需要安全的东西。顺便说一下,我并不是提倡这种方法——你真的应该分开关注。

关于javascript - json从php到jquery相同的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31142982/

相关文章:

javascript - 使用javascript从td(水平行标题)中选择兄弟th

php - PHP 中的 MySQL : Always returns 0 rows exist

php - 为什么 mysql_real_escape_string() 不应该避免任何 SQL 注入(inject)?

CreateRecurringPaymentsProfile 中 Paypal API PROFILESTARTDATE 的 PHP 日期格式

javascript - jQuery UI Datepicker 仅响应第一个文本框

javascript - Datepicker - onClose 不运行

javascript - 使用 RequireJS 的 URL 缓存清除参数?

javascript - 使用选项卡时 View 不会在 ionic 中更新

javascript - 在 JavaScript 中克隆对象

javascript - Jquery Sortable 和 Draggable 在父子框架之间