Javascript 连字符不允许jQuery AJAX调用正常工作
问题:通过myJavascript 连字符不允许jQuery AJAX调用正常工作,javascript,php,jquery,ajax,get,Javascript,Php,Jquery,Ajax,Get,问题:通过myaddData()函数传递的参数中有连字符;想想“12345678-9”。每当传递的数据有一个连字符时,我就会得到Ajax失败警报框在我的应用程序上弹出。但是,每当我将$\u GET变量硬编码为不带连字符的字符串或数字时,我的应用程序的这一部分就可以工作。我已经把范围缩小到可能是连字符导致了这个错误。请参阅下面的代码 HTML PHP(文件:adddata.PHP) 更改此选项: mimeType: 'json', 为此: contentType: 'json', -或-
addData()
函数传递的参数中有连字符;想想“12345678-9”。每当传递的数据有一个连字符时,我就会得到Ajax失败代码>警报框在我的应用程序上弹出。但是,每当我将$\u GET
变量硬编码为不带连字符的字符串或数字时,我的应用程序的这一部分就可以工作。我已经把范围缩小到可能是连字符导致了这个错误。请参阅下面的代码
HTML
PHP(文件:adddata.PHP)
更改此选项:
mimeType: 'json',
为此:
contentType: 'json',
-或-
完全删除mimeType将解决此问题。用此代码替换您的代码,并用结果回复(此处的可编辑fiddle:)。注意在ajax请求中添加了dataType
,并在HTML代码中删除了onclick
事件
HTML:
问题可能出在返回的JSON中。调用失败时是什么样子的?请尝试:encodeURIComponent
调用失败时,我会收到一个警告框,上面写着“Ajax失败!”@aCarella不,我是说实际的HTTP响应是什么样子的?@CodeGodie“-”字符不必是URI编码的。感谢您的响应。这也不起作用,但我从这篇文章中得到了一些想法。我在看到你的回应之前就解决了这个问题,但尝试你的代码也很有效。将此标记为正确答案,并编辑您的回答,以包含对我也有效的内容。
<?php
echo $_GET['oShip'];
mimeType: 'json',
contentType: 'json',
<div id="click-number">12345678-9</div>
<button id="add-analysis-button">Add Data</button>
$("#add-analysis-button").click(function(){
addData($( '#click-number').text());
});
function addData(a_ship) {
$.ajax({
type: 'GET',
url: 'models/add-data.php?oShip=' + encodeURIComponent(a_ship),
dataType: 'json',
beforeSend: function(jqXHR, settings) {
jqXHR.url = settings.url;
},
success: function(jqXHR, data) {
alert("SUCCESS! " + data + " " + jqXHR.url);
},
error: function(jqXHR) {
alert("FAIL! " + jqXHR.url);
}
});
}