我有一个有2个AJAX调用的页面,让我们说/ api1和/ api2。
/ api1使用ejs引擎呈现页面,此页面上有一个按钮,点击/ api2被调用,这将打开一个模态/弹出窗口。
虽然弹出窗口已打开,但它只显示/ api1的数据,而不是/ api2。
伪代码如下:
$("#my_button").click(function(e) {
e.preventDefault();
$.ajax({
url: '/api2',
method:'GET',
data:{fieldname:'<%= data.fieldname %>'},
success: function(dataFromapi2){
$("#myModal").modal("show");
$("#myTable").html('<table class="table table-bordered">'+
'<thead><tr>' +
'<th>Name</th>'+
'</tr>'+
'</thead>'+
'<tbody>'+
'<tr>'+
'<td><%= dataFromapi2.name %></td>'+
'</tr>'+
'</tbody>'+
'</table>'
);
},
error: function (error) {
$('#process_status').html(error);
}
});
});
&#13;
<div class="abc">
<!-- Diplaying the data of /api1 using <%= data.fieldname %> -->
<button class="btn" id="my_button" name="my_button">
<!-- Modal -->
<div class="" id="myModal" role="dialog">
<div class="modal-dialog">
<!--Modal content-->
<div class="modal-content">
<div class="modal-body">
<fieldset>
<div id="myTable" class="table-responsive">
</div>
</fieldset>
</div>
</div>
</div>
</div>
</div>
&#13;
上面的代码存在于单个ejs文件(sample.ejs)中,该文件在调用/ api1时呈现。
当调用/ api2时,它会在浏览器控制台上返回正确的响应,但在ejs标记(&lt; %%&gt;)中使用该响应时,它会返回一个错误(未定义dataFromapi2。)
答案 0 :(得分:0)
你的jQuery ajax调用似乎在调用api2,这就是你想要的。如果您的视图看到api1而不是api2的结果,那么我建议从路由器开始检查您的服务器配置。之后,直接在服务器上使用curl http://localhost/api2
验证控制器是否正常运行。如果仍然无效,那么dataFromapi2.name
一定有问题。如果没有进一步的信息,将很难调试您的问题。