2014-03-28 48 views
-1

我一直坐在這裏堅持兩個小時,試圖找出爲什麼這不起作用,所以我請大家指導一下。AJAX請求不能與外部頁面一起使用?

我有以下腳本,它會拉出當前在頁面上選中的所有複選框,並將它們的title屬性設置爲names數組。每個標題都是字母a-e,取決於他們在特定部分的位置。這可能不是最好的方法,但由於先前的編碼限制,它是最簡單的解決方案。

names = []; 
$('input:checked').each(function() 
    { 
     names.push($(this).attr("title")); 
    }); 

question_one_val = names[0].toString(); 

    $.post("ajax_request.php", 
{first_question: question_one_val 
}); 

所以那麼這個被髮送到我下面的AJAX頁面:

session_start(); 
require_once 'question_responses.php'; 
require_once 'questions.php'; 




$test = $_POST['first_question']; 

$test = question_one($test); 

$_SESSION['views']=$test; 

我還將包括一個小片段來自這兩個要求的網頁。

question.php

function question_one($answer) 
    { 
     $question_one_response=""; 
     if($answer == "a") 
      { 
       $question_one_response = $question_one_response_a; 
      } 
     if($answer == "b") 
      { 
       $question_one_response = $question_one_response_b; 
      } 

     if($answer == "c") 
      { 
       $question_one_response = $question_one_response_c; 
      } 

     if($answer == "d") 
      { 
       $question_one_response = $question_one_response_d; 
      } 

     if($answer == "e") 
      { 
       $question_one_response = $question_one_response_e; 
      } 

      return $question_one_response; 
    } 

和question_responses.php

$question_one_response_a = "Response a"; 
$question_one_response_a = "Response b"; 
$question_one_response_a = "Response c"; 
$question_one_response_a = "Response d"; 

現在至於現在,當我嘗試訪問會話變量,我要麼得到一個空字符串,或變量未設置。

真正讓我感到困惑的是我做了一些測試,而沒有嘗試將其設置爲響應。 所以:

$test = $_POST['first_question']; 


    $_SESSION['views']=$test; 

將返回我這顯示在頁面上正確的A-E值。所以我的ajax請求,以及javascript來獲得價值,似乎工作,我認爲它必須是其他網頁的問題,但我很難找出究竟是什麼原因。

+0

我很困惑,你真的有什麼問題。你測試過'$ _POST ['first_question']'的值嗎?在發送ajax請求之前,您是否測試過它(即在javascript中?) –

+0

是的,我在發送它之前以及在$ test = $ _POST ['first_question']之後測試了它。這兩次都會返回預期的a-e值。當我通過question_one()函數運行它時,會嘗試將它與$ question_one_response關聯起來。 –

回答

0

所以,如果我沒有錯,你已經檢查了所有的點?

  • session_start();總是設置在頁面頂部,任何輸出之前(甚至空白字符)。

  • question_one_val包含的預期值(用的console.log())

  • $test包含預期值(用的var_dump)

  • question_one收益的預期值< =您的問題可能是有,你確定$answer至少符合其中一個條件嗎?

你應該嘗試通過$question_one_response="test";修改$question_one_response="";,看看你的會話包含test串!