function imageHandler(myToDo,myimageId)
{
$.get('{{path('imageHandler')}}',
{imageId: myimageId, toDo: myToDo},
function(response) {
if(response.code == 100 && response.success) {
//success
alert(myToDo+' was sent');
}
else if(response.code == 200) {
//code 200 = user not logged in
};
}, "json");
}
这是我正在编写的symfony2应用程序的工作ajax代码。
我使用jquery的$.get
来发送数据,如何在没有jQuery的情况下编写这个函数?我已经研究过其他类似的问题,但我不明白答案。
已经尝试过这个
function imageHandler(myToDo,myimageId)
{
var hr = new XMLHttpRequest();
var vars = {imageId: myimageId, toDo: myToDo};
hr.open("GET", "{{path('imageHandler')}}", true);
hr.setRequestHeader("Content-type", "application/json");
hr.onreadystatechange = function()
{
if(hr.code == 100 && hr.success)
{
//success
}
else if(hr.code == 200)
{
//code 200 = user not logged in
}
}
hr.send(vars);
}
这是答案:
一位同事刚回答了这个问题。 感谢您的帮助,以下是答案
function imageHandler(myToDo,myimageId)
{
var xml = new XMLHttpRequest();
xml.open("GET", "{{path('imageHandler')}}", true);
xml.setRequestHeader("Content-type", "application/json");
xml.onreadystatechange = function()
{
var serverResponse = JSON.parse(xml.responseText);
if(serverResponse.code == 100 && serverResponse.success)
{
//success
}
else if(serverResponse.code == 200)
{
//not logged in
}
xml.send({imageId: myimageId, toDo: myToDo});
}
}
答案 0 :(得分:1)
正确使用您的HTTP动词
hr.open("GET", "{{path('imageHandler')}}", true);
您正在发出GET请求,但尝试向正文发送请求。你需要使用POST(或者PUT),而不是GET。
hr.open("POST", "{{path('imageHandler')}}", true);
或者:您编写的jQuery代码正在发出GET请求并将数据编码为查询字符串。你可以这样做。
发送您声称要发送的数据格式
hr.setRequestHeader("Content-type", "application/json");
你说你发送JSON但是......
var vars = {imageId: myimageId, toDo: myToDo};
hr.send(vars);
... vars
是一个JavaScript对象。转换为字符串时,它看起来像“[Object object]”。如果要发送JSON,则需要生成JSON。
var vars = {imageId: myimageId, toDo: myToDo};
hr.send(JSON.stringify(vars));
请注意,处理数据的服务器端程序需要为set up to handle JSON requests。
或者:您编写的jQuery代码是将数据编码为查询字符串而不是JSON。你可以这样做。
您需要正确检查响应状态
if(hr.code == 100 && hr.success)
code
属性来自哪里? success
属性来自哪里?它们都没有出现在您说过的文档中。
如果您使用onreadystatechange
处理数据,则需要测试是否:
这样:
if (hr.readyState == 4 && hr.status == 200)
答案 1 :(得分:0)
在javascript中,您可以尝试以下内容:
req = new XMLHttpRequest();
req.onreadystatechange=function() {
status = req.status; //this is your response.code
responseHtml = req.responseText; }
req.open("GET","your ajax file here",true);
req.send();
这只是关于javascript中的ajax请求的想法。 more info here