我有一个带有两个下拉菜单“诊所”和“服务”的表格。现在,“服务”下拉列表将根据“诊所”下拉列表的更改进行更新。

现在,“服务”和“诊所”的数据存储在另一个网站数据库中。

我已经使用cURL提取了“诊所”数据。但是由于我必须在运行时中更新“服务”下拉列表,因此我尝试使用AJAX来获取“服务”数据。

的HTML

<form method="post">
  <div class="chosen-select-single mg-b-20">
    <label><b>Select Clinic : </b></label>
    <select data-placeholder="Choose a Clinic..." class="chosen-select" tabindex="-1" name="clinic" id="clinic_id">
      <option value="">Select One</option>
      <?php foreach($clinic_datum as $data) { ?>
        <option value="<?php echo $data->id;?>"><?php echo $data->name?></option>
      <?php } ?>
    </select>
    <?php if($clinicErr != "") { ?>
      <span class="error">* <?php echo $clinicErr;?></span>
    <?php } ?>
  </div>
</form>


AJAX

jQuery("#clinic_id").change(function() {
  var clinic_id = $('#clinic_id').val();
  if(clinic_id.trim() != '') {
    jQuery.ajax({
      url: "http://www.sencare.com.bd/service_data_curl",
      type: 'GET',
      dataType: 'jsonp',
      data: {clinic_id : clinic_id},
      success: function(msg) {
        console.log('msg');
      }
    });
  }
});


但是我得到这个错误


  跨域读取阻止(CORB)阻止了MIME类型为text / html的跨域响应http://www.sencare.com.bd/service_data_curl?callback=jQuery1113005791399070777792_1542690562198&clinic_id=2&_=1542690562199。有关更多详细信息,请参见https://www.chromestatus.com/feature/5629709824032768


如何解决这个问题……有人帮忙吗?

最佳答案

当您从第三方API动态加载数据时,应将ajax请求的目标url更改为您自己域上的脚本,并像最初那样通过curl获取数据。然后将其退回并正常处理。您可能不需要jsonp-只是常规json应该可以正常工作。

从理论上讲,如果您有权将CORS标头添加到sencare.com,则可以通过在Apache配置文件中执行以下操作来允许ajax请求:

Access-Control-Allow-Origin: https://{your-website-url}


不过,在大多数情况下,您只需要使用自己的脚本来处理服务器端的事务,因为这将提供更高的稳定性,灵活性,甚至是一种方便的方法来验证和清除API吐出的任何内容。

09-25 18:23
查看更多