2015-10-29 3 views
1

Я разрабатываю мобильное приложение, которое будет подключаться к API сайта. Я отправляю данные через jQuery Ajax, но, избегая данных, чтобы быть дружественным к URL, мой параметр GET становится пустым, когда он достигает API.jQuery Ajax отправляет пустые экранированные данные

У меня есть следующий JQuery/код яваскрипта

var id =; 
var token = 55fggt98ujhsbnh; 
var email = "[email protected]"; 
var json = { // Create object 
    "task" : "request", 
    "id" : id, 
    "token" : token 
}; 
var jsonfull = []; // Push to jsonfull. 
jsonfull.push(json); 
var url = JSON.stringify(json); 
var crypt = '&hash='+CryptoJS.SHA512(token+task+email+url).toString(CryptoJS.enc.Hex)+'&callback=?'; 
var x = 'json='+escape(url)+escape(crypt); 
$.ajax({ 
    url: "mydemosite.com/?p=app&", 
    crossDomain: true, 
    data: x, 
    dataType: "jsonp"   
}) 
.done(function (json){ 
    alert(json.response); 
}); 

На мой PHP код, где данные передаются у меня есть следующий код, чтобы получить Аякса данные

$rest = $_GET['json']; 
$api = json_decode($rest,true); 
$type = 'json'; 
file_put_contents('logs/api_task.txt', print_r($_GET,true)); 

Проверка файла, где содержимое было сохранено, я получил это

Array 
(
    [p] => app 
    [callback] => jQuery1111006607784540392458_1446159115404 
    [json] => {"task":"balance","merchant":"hifee","token":"1446159118-5632a30e2ed0f5632a30e2ed465614257"}&hash=0b645fac1f3ef3b5911435e58fbc1f157bd0273a01a664427b014fb517d9c46ae60e1d2fe3128d76d610706f9b8a9ac660517b77cbf4c3c6e02e597b065d1038&callback=? 
    [_] => 1446159115406 
) 

Данные, которые я надеялся получить, были

Array 
(
    [p] => app 
    [callback] => jQuery1111006607784540392458_1446159115404 
    [json] => {"task":"balance","merchant":"hifee","token":"1446159118-5632a30e2ed0f5632a30e2ed465614257"} 
    [hash] => 0b645fac1f3ef3b5911435e58fbc1f157bd0273a01a664427b014fb517d9c46ae60e1d2fe3128d76d610706f9b8a9ac660517b77cbf4c3c6e02e597b065d1038 
) 

Я был бы признателен за любую помощь, которую я мог получить.

ответ

1

Поскольку вы избегаете переменной crypt и объединяете ее со значением параметра JSON. С escape вы также избежали &, и все становится частью параметра json.

Было бы проще, если бы вы просто передали параметры как объект и позволили jQuery избежать значений.

$.ajax({ 
    url: "mydemosite.com", 
    crossDomain: true, 
    data: { 
     p: "app", 
     json: url, 
     hash: CryptoJS.SHA512(token+task+email+url).toString(CryptoJS.enc.Hex) 
    }, 
    dataType: "jsonp"   
}) 
.done(function (json){ 
    alert(json.response); 
}); 
+0

это работает довольно хорошо. Еще один вопрос: как мне передать обратный вызов с отправленными данными? – user297056

Смежные вопросы