我有以下类型的网址
http://11.11.11.11/url/index.php?data={method:method_name,params:{param1:value,param2:value,}}
我希望将数据从骨干视图传递到具有以下结构类型的ajax类
define(['jquery', 'backbone'],
function($, Backbone) {
var ajax = {
getDataCall: function(url, data, successCallBack, failureCallBack) {
var that = this;
//console.log(method);
//console.log(successCallBack);
that.showLoading();
$.ajax({
url: url,
method: 'get',
data: data,
// contentType:"application/json; charset=utf-8",
success: function(data) {
that.hideLoading();
//alert("success ajax");
successCallBack(data);
},
fail: function(data) {
that.hideLoading();
failureCallBack(data);
}
});
},
showLoading: function() {
$.blockUI();
//$.blockUI({ message: '<img src="img/ajax-loader.gif" />' })
},
hideLoading: function() {
$.unblockUI();
}
};
return ajax;
});
从骨干视图我打电话
var dataToSend={"method":"method","params":{"param2":"param2"}}
ajax.getDataCall("http://11.11.11.11/url/index.php?",dataToSend,successCallBack,failureCallback)
但它没有变成正确的网址。这段代码有什么问题?
答案 0 :(得分:1)
这是一个有趣的设置。我之前从未在URL中看到过JSON格式。但是,基本上jQuery在data属性中获取一个对象文字,并在默认的contentType上对其进行序列化。
无论如何,解决方案是您需要1)对对象进行字符串化,2)取走引号,并且3)将“data =”放在那里:
var dataToSend={"method":"method","params":{"param2":"param2"}};
dataToSend = 'data=' + JSON.stringify( dataToSend ).replace(/\"/g, '');
ajax.getDataCall("http://11.11.11.11/url/index.php?",dataToSend,successCallBack,failureCallback)