2016-10-09 3 views
0

Имея проблемы с передачей ajax до $_POST, он всегда возвращает false.

То, что я пытался до сих пор:

  • Использование CONTENTTYPE: 'application/json; charset=UTF-8',
  • Создание функции для AJAX и добавление к JQuery OnClick
  • Удалены DATATYPE в Javascript, console.log: Object {readyState: 0, responseText: "", status: 0, statusText: "error"}
  • С dataType в Javascript, Object {readyState: 4, responseText: "↵ ↵Failed to hold<br>", status: 200, statusText: "OK"}

Javascript:

 $(document).ready(function(){ 
      $("#showcart").click(function(event){ 
       event.preventDefault(); 
       $.ajax({ 
        data: {'jCart':JSON.stringify(cart)}, 
        type: 'POST', 
        dataType: 'json', 
        url: 'storecart.php', 
        contentType:'application/json; charset=UTF-8', 
        success: function(data){ 
         console.log("Success") 
        }, 
        error: errorFunction 
       }); 

      }); 
     }); 

function errorFunction(){ 
    console.log("Error"); 
} 

Storecart.php

<?php 
    if(isset($_POST['jCart'])){ 
     $decode = json_decode($_POST['jCart']); 
     $_SESSION['receive'] = $decode; 
     $product = $_SESSION['receive']; 
    } 
    else{ 
     echo "Failed to hold<br>"; 
    } 
?> 

Cart.php

<?php 
    session_store(); 
    include(Storecart.php); 
?> 

На консоли, он будет говорить "Error".

На тележке.PHP скажет "Failed to hold".

Что я знаю, так это то, что ajax работает неправильно, я не знаю, как его исправить.

ПОЧТИ РЕШЕНИЕ для AJAX, но не может по какой-то причине

Не знаю почему, но это работает для меня.

Создание функции:

function showcart(){ 
    var jData = JSON.stringify(cart); 
    $.ajax({ 
     url:"storecart.php", 
     type:"post", 
     data: 'datastring=' + jData, 
     datatype: "json", 
     success: function(data){ 
      console.log("SUCCESS") 
      console.log(jData); 
     }, 
     error: function(data){ 
      console.log("REDO") 
     } 
    });  
} 

Добавить это в JavaScript:

$(document).ready(function(){ 
    $("#showcart").click(function(event){ 
     event.preventDefault(); 
     showcart(); 
     }); 
    }); 
+0

Попробуйте изменить ошибки обратного вызова и дайте нам знать, что вы видите в консоли. error: 'function (data) {console.log (данные); } ' – Sina

+0

@Sina' Object {readyState: 4, responseText: "↵ ↵Failed to hold
", статус: 200, statusText: "OK"} ' –

+0

Попробуйте' метод: 'POST'' вместо 'type'. – Sina

ответ

0

Вы не декларировать тележку в любом месте, которое отправляет в данных данных: { 'jCart': JSON.stringify (корзина)}

+0

cart объявляет в javascript, не помещал его в этот код –

0

Попробуйте изменить свой код так:

 var dataJcart = { 
     "var": "example jcart" 
     }; 
     var dataString = JSON.stringify(dataJcart); 

      $(document).ready(function(){ 
      $("#showcart").click(function(event){ 
      event.preventDefault(); 
      $.ajax({ 
       url: 'storecart.php', 
       type: 'POST', 
       data:{'jCart': dataString}, 
       success: function(data){ 
        console.log(data); 
       }, 
       error: errorFunction 
      }); 

     }); 
    }); 
    function errorFunction(){ 
    console.log("Error non"); 
} 

Storecart.php

if(isset($_POST["jCart"])) 
    { 
     $decode = json_decode($_POST["jCart"]); 
     echo $decode->var; 
    } 
Смежные вопросы