Javascript 如何在没有jquery的情况下使用ajax请求 函数imageHandler(myToDo,myimageId) { $.get({{path('imageHandler')}}}, {imageId:myimageId,toDo:myToDo}, 功能(响应){ if(response.code==100&&response.success){ //成功 警报(myToDo+“已发送”); } 否则如果(response.code==200){ //代码200=用户未登录 }; }“json”); }

Javascript 如何在没有jquery的情况下使用ajax请求 函数imageHandler(myToDo,myimageId) { $.get({{path('imageHandler')}}}, {imageId:myimageId,toDo:myToDo}, 功能(响应){ if(response.code==100&&response.success){ //成功 警报(myToDo+“已发送”); } 否则如果(response.code==200){ //代码200=用户未登录 }; }“json”); },javascript,jquery,ajax,symfony,Javascript,Jquery,Ajax,Symfony,这是我正在编写的symfony2应用程序的ajax代码 我正在使用$。从jquery获取来发送数据,没有jquery如何编写此函数?我已经研究了其他类似的问题,但我不理解答案 已经试过了 function imageHandler(myToDo,myimageId) { var hr = new XMLHttpRequest(); var vars = {imageId: myimageId, toDo: myToDo}; hr.open("GET", "{{pat

这是我正在编写的symfony2应用程序的ajax代码

我正在使用
$。从jquery获取
来发送数据,没有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});   
   }
}

在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请求的一个想法

正确使用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]”。如果要发送JSON,则需要生成JSON

var vars = {imageId: myimageId, toDo: myToDo};
hr.send(JSON.stringify(vars));  
请注意,处理数据的服务器端程序需要重新启动

或者:您编写的jQuery代码将发送编码为查询字符串而不是JSON的数据。你可以这样做


您需要正确检查响应状态

  if(hr.code == 100 && hr.success)
code
属性来自哪里?
success
属性来自哪里?它们都没有出现在你说你读过的文档中

如果使用
onreadystatechange
处理数据,则需要测试:

  • 就绪状态已完成
  • HTTP状态正常
例如:


我已经试过了,但是代码没有响应,如果您能检查我编辑的问题,我将不胜感激,“但是代码没有响应”是什么意思?总的来说,我认为您没有真正阅读文档。触发“imagehandler”函数的Not Response=按钮没有任何功能,控制台也没有显示任何错误
responseHtml=req.responseText
似乎放错地方了。感谢您的回答,您的建议看起来像我已经尝试过的代码()如果您能比较jquery和javascript,看看它们为什么不响应same@FelixKling:我写这篇文章只是为了表达我的想法,谢谢你的指正!感谢您的回答,代码和成功变量是从symfony2控制器返回的,如$response=array(“代码”=>200,“成功”=>false);返回新的响应(json_encode($Response));然后,在确定响应的状态为OK后,需要将响应的文本内容解析为JavaScript对象,然后在该对象上运行原始的
if
语句,而不是XHR对象。
if (hr.readyState == 4 && hr.status == 200)