我试过的代码如下:
var dataO = new Object();
dataO.numberId = 1;
dataO.companyId = 531;
$.ajax({
type: "POST",
url: "TelephoneNumbers.aspx/DeleteNumber",
data: "{numberId:1,companyId:531}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
alert('In Ajax');
}
});
Run Code Online (Sandbox Code Playgroud)
我想将对象dataO作为ajax数据传递,我该怎么办呢?
red*_*are 42
我会留下原来的答案,但以下是你需要接近它的方法.(原谅我,但是很长一段时间以来我使用常规的asp.net/web服务和jquery :)
您需要使用以下js lib json2库,然后可以使用stringify方法确保您的json具有正确的服务格式.
var data0 = {numberId: "1", companyId : "531"};
var json = JSON2.stringify(data0 );
$.ajax({
type: "POST",
url: "TelephoneNumbers.aspx/DeleteNumber",
data: json,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
alert('In Ajax');
}
});
Run Code Online (Sandbox Code Playgroud)
更新:这里的问题/答案相同
传递给php的所有数组都必须是对象文字.这是JS/jQuery的一个例子:
var myarray = {}; //must be declared as an object literal first
myarray[fld1] = val; // then you can add elements and values
myarray[fld2] = val;
myarray[fld3] = Array(); // array assigned to an element must also be declared as object literal
Run Code Online (Sandbox Code Playgroud)
等等...`
它现在可以通过Ajax在data:参数中发送,如下所示:
data: { new_name: myarray },
Run Code Online (Sandbox Code Playgroud)
php选择此项并将其作为普通数组读取,无需任何解码.这是一个例子:
$array = $_POST['new_name']; // myarray became new_name (see above)
$fld1 = array['fld1'];
$fld2 = array['fld2'];
etc...
Run Code Online (Sandbox Code Playgroud)
但是,当您通过Ajax将数组返回到jQuery时,必须首先使用json对其进行编码.这是php中的一个例子:
$return_array = json_encode($return_aray));
print_r($return_array);
Run Code Online (Sandbox Code Playgroud)
而那个输出看起来像这样:
{"fname":"James","lname":"Feducia","vip":"true","owner":"false","cell_phone":"(801) 666-0909","email":"jp@gmail.com", "contact_pk":"","travel_agent":""}
Run Code Online (Sandbox Code Playgroud)
{再次我们看到对象文字编码标签}现在这可以被JS/jQuery读取为一个数组,而JS/JQuery中没有任何进一步的动作......这是jquery ajax中的一个例子:
success: function(result) {
console.log(result);
alert( "Return Values: " + result['fname'] + " " + result['lname'] );
}
Run Code Online (Sandbox Code Playgroud)
没有必要将数据作为 JSON 字符串传递,您可以直接传递对象,无需定义contentTypeor dataType,如下所示:
$.ajax({
type: "POST",
url: "TelephoneNumbers.aspx/DeleteNumber",
data: data0,
success: function(data)
{
alert('Done');
}
});
Run Code Online (Sandbox Code Playgroud)
只需按原样传递对象。请注意,您可以按如下方式创建对象
var data0 = {numberId: "1", companyId : "531"};
$.ajax({
type: "POST",
url: "TelephoneNumbers.aspx/DeleteNumber",
data: dataO,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
alert('In Ajax');
}
});
Run Code Online (Sandbox Code Playgroud)
UPDATE 似乎是序列化程序的一个奇怪问题,也许它需要一个字符串,出于兴趣,您可以尝试以下操作。
数据:“{'numberId':'1','companyId':'531'}”,
| 归档时间: |
|
| 查看次数: |
170178 次 |
| 最近记录: |