jQuery ajax:从变量中获取url不起作用 - 同样硬编码的url会这样做 - 为什么?

时间:2018-04-21 21:26:07

标签: javascript php jquery ajax

当尝试设置并获取jQuery Ajax(post)调用的url时,我认为允许动态设置请求发送到的url是有用的,如下所示:

在ID为“store”

的div中将网址设置为“store.php”
<div id='store'>store.php</div>

然后在jQuery Ajax调用中使用它,通过从id为'store'的div中提取值:

var store = $('#store').val(); // the url path to store.php
$.ajax({
  method: "post",
  data: "html",
  //url: "store.php", // SUCCESS - status: success, alert 'content saved' is triggered, i.e. we received msg 'content saved' back from store.php
  url: store, // FAILURE - status: success, alert 'an error occured' is triggered, do NOT receive msg back from store.php
  data: {
    content: content,
    slug: slug,
    articleId: articleId
  },

  success: function(data, status) {
    if (data == "content saved") {
      alert('your content is saved');
    } else {
      alert('an error occured...');
    }
    document.getElementById('status').innerHTML = 'STATUS: ' + status;
    document.getElementById('success').innerHTML = 'RESPONSE FROM SERVER: ' + data;
  },

  error: function(xhrobj, status) {
    document.getElementById('error').innerHTML = 'ERROR handler says: ' + status;
  }
})

使用硬编码的url:'store.php'有效,我从store.php收到一条消息,但是当我使用div中的'store.php'时,它没有。

结论:我想从div(或隐藏的表单字段)动态检索url,类似于我在这里显示的方式,因为它可以让我轻松地更改目标php文件

欢迎任何想法,非常感谢提前

1 个答案:

答案 0 :(得分:0)

.val();不检索元素的文本内容 - 它返回元素的value。 (对于输入和textareas等元素有效,但对通用div无效)

改为检索元素的文本:

var store = $('#store').text();

或者更好,没有jQuery:

var store = document.querySelector('#store').textContent;