2016-01-03 7 views
0

Когда я пытаюсь отправить данные с помощью ajax, он добавляет квадратные скобки к значениям. Я отлаживал более 1 дня, но я этого не делал. Каждая вещь работает отлично, но в базе данных он хранит с кронштейнами Ex: мое публикуемым значением: Jhon В базе данных: [u'jhon ']Квадратные скобки, добавляющие при отправке json-данных с помощью ajax

Это мой пример код

function SignUp() { 

       if($("#firstname").val()=="") { 
        alert("All fields are complusory."); 
        return; 
       } 
       if($("#lastname").val()=="") { 
        alert("All fields are complusory."); 
        return; 
       }if($("#emailid").val()=="") { 
       alert("All fields are complusory."); 
       return; 
      } 
       if($("#mobileno").val()=="") { 
        alert("All fields are complusory."); 
        return; 
       } 

       console.log("firstName: " + $("#firstname").val()); 

       var ajax_data = {}; 
       ajax_data["firstname"]=$("#firstname").val(); 
       ajax_data["lastname"]=$("#lastname").val(); 
       ajax_data["emailid"]=$("#emailid").val(); 
       ajax_data["mobileno"]=$("#mobileno").val(); 

       $.ajax({ 
        type: "POST", 
        url: "signup.php", 
        data : jQuery.param(ajax_data, true), 
        traditional: true, 
        dataType: "json", 
        success: function(response) { 
         console.log("response from sign up " + response.status + " " + response.message); 
         if (response.status == true) { 
          if (response.data.user_id != "-1") { 
          // SignIn($("#mobileno").val()); 
          return; 
          } 
         } 
         else 
         alert(response.message); 
        }, 
        error:function(){ 
         alert("failed"); 
        } 
       }); 
      } 

signup.php 
<?php 
error_reporting (E_ALL); 
ini_set ('display_errors', 1); 
require_once ("sessionstart.php"); 

    $service_url = 'http://52.77.213.61/kitchenvilla/v6/user/signup'; 
    $curl = curl_init ($service_url); 
    $curl_post_data = array (
      "first_name" => $_POST["firstname"], 
      "last_name" => $_POST["lastname"], 
      "email" => $_POST["emailid"], 
      "mobile" => $_POST["mobileno"], 
      "reg_id" => "xxxxx", 
      "ref_code" => "xxxxx" 
    ); 
    curl_setopt ($curl, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($curl, CURLOPT_POST, true); 
    curl_setopt($curl, CURLOPT_POSTFIELDS,$curl_post_data); 
    $curl_response = curl_exec ($curl); 
    curl_close ($curl); 
    echo json_encode((array) json_decode ($curl_response, true)); 
    ?> 

Может ли один помочь мне, пожалуйста

ответ

1

Обратите внимание, что вы отправляете JSON:

$.ajax({ 
    ... 
    url: "signup.php", 
    ... 
    dataType: "json", 
    ... 

На стороне сервера (PHP) вам необходимо декодировать значение JSON, которое вы получаете, используя функцию json_decode().

+0

@ VooraTarun проверить мое редактирование –

+0

жаль, что это не сработало для меня. Есть идеи ? –

+0

Что эквивалентно вашему объекту 'ajax_data' на стороне PHP? –

1

Вот некоторые "советы и подсказки":
1) При отправке POST запрос через CURL ассоциативный массив 'post_data' должен быть закодирован с http_build_query функции:

... 
curl_setopt($curl, CURLOPT_POST, true); 
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($curl_post_data)); 
... 

2) json_decode с true прошло поскольку второй параметр уже возвращает массив, вы не должны бросать его в массив дважды:

echo json_encode(json_decode($curl_response, true)); 
Смежные вопросы